Is randperm() consistent under different hardware platform, OS, MATLAB versions?
Show older comments
I use randperm() to generate sets of numbers repeatly using a for loop. I always make sure I keep the RandStream consistent over different running environment by using such as,
RandStream.setDefaultStream(RandStream('mt19937ar','seed',1); or RandStream.getDefaultStream();
Recently, I've notice that sometimes I get different randomization sequences across the sequential randperm sets, although I was using an identical seed. The only difference was 1) Physical processor (I was using number of heterogeneous cluster nodes)
Should I get the same sequences across different processors?
Answers (3)
Walter Roberson
on 26 Sep 2012
0 votes
Exactly which point you seed at could make a difference. When you use multiprocessing operations, the different tasks are seeded differently, so you would need to seed inside the parallel operation.
Let's test it out!
What do you get? Post in a comment...
% r2011b, Windows 7, 64bit maxNumCompThreads=4
rng(678)
randperm(10)
randperm(10)
ans =
6 5 9 10 1 4 2 3 8 7
ans =
7 4 3 6 8 5 1 2 9 10
Now, on the same system:
% r2007b, Windows 7, 64bit maxNumCompThreads=1
rand('twister',678)
randperm(10) % Same as above...
randperm(10) % Same as above...
6 Comments
Walter Roberson
on 27 Sep 2012
I get the same pair of results on R2012a, Mac OS-X Lion, 64 bit
Matt Fig
on 27 Sep 2012
Now we just need a linux person to chime int!
Daniel Shub
on 27 Sep 2012
I thought Walter was a Linux person... Same in Linux (R2011a, Arch, 64-bit).
Matt Fig
on 27 Sep 2012
Is Mac OS a linux thing? I don't know much about it.
Daniel Shub
on 27 Sep 2012
No, Mac and Linux are different. I just thought Walter used Linux and not a Mac.
Walter Roberson
on 28 Sep 2012
I was on Linux where I used to work.
Peter Perkins
on 28 Sep 2012
0 votes
John, there is no difference in the random number generators between different hardware.
You seem to be saying that this was a distributed environment. Without knowing more, it's hard to say anything concrete, but you have to be careful about your random stream initialization on the workers. Especially if this is a parfor loop, since the way the iterations get doled out is unpredictable.
Categories
Find more on Entering Commands in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!