let next_step prng nb_updates transition_rule configuration_in configuration_out =
  let ring_size = Array.length configuration_in in
(*   assert (ring_size = Array.length configuration_in ); *)
  assert (ring_size = Array.length configuration_out);
  for i=0 to pred ring_size do configuration_out.(i) <- configuration_in.(i) done;
  for i=1 to nb_updates do
    let updated = Random.State.int prng ring_size in
    configuration_out.(updated) <-
      transition_rule configuration_out updated;
  done;