Asked by X Du
on 11 Apr 2012

I want to use rng to generate several random number and save the state of generating them within a loop. so at the next step, I can use this state to continue generating randome number. e.g.:

for i=1:10

if i==1

rng(1);

else

load state

end

a=rand;

b=rand;...

save state

end

Does anybody know how to programme it?

Thanks a lot

Issac

Answer by Wayne King
on 11 Apr 2012

When you call rng, you can output that information and save it if you wish

for nn = 1:10

scurr = rng;

rngstate{nn} = scurr.State;

x = randn(1,1);

end

X Du
on 12 Apr 2012

Thanks,in the case you gave,rngstate would be the same.but I want to use the sequential state not the same state.

What I want to do is that using the sequential state to generate random numbers when given a fix seed and a generator method.e.g. given rng(1),generating some random number and then record the current state which will be used as the initial state of next step (continue generating random numbers in the next loop).

for i=1:10

if i==1

rng(1);

else

load the state

use the state as the initial state

end

a=rand;

b=rand;...

save the current state

end

At the end I need this state sequence to repeat my simulations and also ensure I can control the rand numbers of every step within the loop.

Is it possible and any suggetions? thanks

Sign in to comment.

Answer by Richard Willey
on 11 Apr 2012

It's hard to make a specific recommendation without known more about the use case.

What (specifically) are you trying to accomplish / control?

X Du
on 12 Apr 2012

sorry for the confused question.What I want to do is that using the sequential state to generate random numbers when given a fix seed and a generator method.e.g. given rng(1),generating some random number and then record the current state which will be used as the initial state of next step (continue generating random numbers in the next loop).

for i=1:10

if i==1

rng(1);

else

load the state

use the state as the initial state

end

a=rand;

b=rand;...

save the current state

end

At the end I need this state sequence to repeat my simulations and also ensure I can control the rand numbers of every step within the loop.

any suggetion? thanks

Sign in to comment.

Answer by Richard Willey
on 12 Apr 2012

From the sounds of things, the simplest thing to do would be to generate all of your random numbers OUTSIDE your loop.

Start by setting your seed and generate a vector with all the random numbers that you need for all your loops. Index into this as necessary.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## X Du (view profile)

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/35163-the-problem-of-using-rng-to-generate-random-numbers#comment_73252

## X Du (view profile)

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/35163-the-problem-of-using-rng-to-generate-random-numbers#comment_73258

Sign in to comment.