出于随机模拟的目的,以下算法是否足以产生 100 万个与大多数计算机语言中的简单 rand() 命令质量相同的伪随机十进制数?该算法的前提是使用 10 个质量十进制伪随机数,并将其扩展为 100 万个质量十进制伪随机数。
请注意以下只是一个算法,而不是真正的代码。
double rands[10] = {rand()}; /// initialize a vector of 10 quality pseudorands [0,1]
double expandedRands[1000000] = {0}; /// initialize a vector of size 1 million
for(int i = 0; i < 10; i++)
{
for(double j = 0; j < 100000; j++) /// j goes from zero to one hundred thousand
{
expandedRands[(100000 * i) + j] = rands[i] * abs((j - 0.5)/ 1000000);
}
}
编辑:我意识到人类可以清楚地查看从该算法生成的数字并知道它们遵循某种模式,但真正的问题是,如果输入这些数字而不是 100 万个 rand() 数字,随机模拟是否会以相同的方式工作.