How to duplicate rand('twister', 0) in current Matlab?
古いコメントを表示
Hi everyone,
I am trying to change my old code to use the new RNG in current Matlab (R2011a).
In my old code, I usually have something like this,
>> rand('twister', 1);
>> x = rand(1, 1e5);
So I have tried the following experiment to verify that RNG will give me the same random numbers,
>> rng(1, 'twister'); x1 = rand(1,100);
>> rand('twister', 1); x2 = rand(1,100);
>> max(abs(x1 - x2))
ans =
0
So this works for seed = 1. However when I try setting seed to 0, then they do not match,
>> rng(0, 'twister'); x1 = rand(1,100);
>> rand('twister', 0); x2 = rand(1,100);
>> max(abs(x1 - x2))
ans =
0.817037959716122
A while back (probably year ago), I have posted some comment about random stream (back then, this is a new feature) and seed of 0 have come up in the discussion. But I cannot find the discussion any more.
So my question: how can I use RNG to duplicate the effect of rand('twister', 0)?
Also besides 0, is there any other seed having this problem?
Thanks Kevin
採用された回答
その他の回答 (2 件)
Sean de Wolski
2012 年 2 月 6 日
0 is the same as the MT default in the original paper, 5489.
rng(0,'twister'); x1 = rand(1,100);
rand('twister', 5489); x2 = rand(1,100);
isequal(x1,x2)
Kevin
2012 年 2 月 6 日
2 件のコメント
Peter Perkins
2012 年 2 月 7 日
Yes, although
* The seed need not be an unsigned 32 bit integer type, it can be any numeric type. It just has to be an integer _value_. So type "1", not "uint32(1)".
* 5489 is perfectly acceptable as itself. 0 is just a shorthand.
Kevin
2012 年 2 月 7 日
カテゴリ
ヘルプ センター および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!