why the simulation results is little different between running directly and using a restart file

I perform two simulations :one is running directly and the other is using the write_restart command after 50000timesteps to conserve the state, and use read_restart to read the restart file in a new input script.The parameter settings is the same,however,after simulation,i find the atoms position is different after 65000timestep between the two simulations.I want to know this phenomenon is normal or somewhere i have done incorrectly?
Yours sincerely

On a timestep you write a restart file, LAMMPS performs

a re-neighbor, so that when you read the restart file (in a 2nd simulation)

and it performs an initial neighboring, you are more likely to
get the same answer when comparing the 2 simulations going
forward in time.

If you run a 3rd simulation (as you did) where you do not write
the restart file, then you did not perform a reneighbor on step

  1. That means the 3rd simulation is slightly different
    than the first two, and thus the trajectories will diverge more

rapidly over time due to atoms being in a different order, etc.

15000 steps is plenty of time for two trajectories to diverge in MD.