我在MATLAB的文档中读到他们使用Mersenne Twister作为他们的rand()和randi()函数。
我写了一些示例代码来测试随机性:
rng('shuffle');
rand_arr = zeros(10, 10);
for i=1:10
rand_arr(i,:) = randi(800, 1, 10);
end
uncollided = 0;
for p=1:10
if length(rand_arr(:,p)) == length(unique(rand_arr(:,p)))
uncollided = uncollided + 1;
end
end
disp(uncollided/10);
一组10个数字的非组合数最终平均为95%,这似乎太低了。当我减少randi()的宇宙时,它会变得更糟。我认为Mersenne Twister会有更好的价值观。是否有更“随机”的发电机?
我正在使用MATLAB v2017。
感谢。
答案 0 :(得分:0)
800! /(790!*(800 10 ))〜。945
关于哪个是最好的随机数发生器的问题仍然存在。