# random seed

How to start using random() and stop the process and then recover the random generation from the point where it stopped?

Example

  set_random_seed(0)
some cycle calling random()


later

  set_random_seed( ...where??... )
more steps of some cycle calling random()

edit retag close merge delete

Sort by ยป oldest newest most voted

I don't have an answer to your question, which could be interpreted about storing the current random state and then restarting from that state.

On the other hand, if you are not making any calls to any random generator in the intermediate steps, then you don't need to set the random seed to anything. The next random() call should start from exactly where it was stopped.

sage: set_random_seed(0)
sage: [ZZ.random_element() for _ in range(4)]
[-8, 2, 0, 0]
sage: [ZZ.random_element() for _ in range(4)]
[1, -1, 2, 1]


You can see that the random generator starts off from the same point even when I have intermediate computations.

sage: set_random_seed(0)
sage: [ZZ.random_element() for _ in range(4)]
[-8, 2, 0, 0]
sage: integrate(x^2, x)
1/3*x^3
sage: F.<a> = GF(4,'a')
sage: [ZZ.random_element() for _ in range(4)]
[1, -1, 2, 1]

more

By "later" I mean few days later and not just the next computation. Maybe this is not an effective mathematical question because random is random at all times (stopping or not). Starting from a seed there's a cycle in generated random number. But maybe that's no important to follow the same cycle if I interrupt the computation. Thanks.

( 2013-04-16 05:10:34 -0600 )edit

Would current_randstate help? See the doc for randstate.

more

( 2013-04-16 05:07:35 -0600 )edit