Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 非迭代随机数序列的简单公式是什么?_Math_Random - Fatal编程技术网

Math 非迭代随机数序列的简单公式是什么?

Math 非迭代随机数序列的简单公式是什么?,math,random,Math,Random,我想要一个函数f(x),它根据x值给出均匀分布的好的伪随机数。我知道线性同余生成器,但是它们在迭代中工作,也就是说,我提供初始种子,然后一个接一个地获得随机值序列。这不是我想要的,因为如果a想要得到序列中的第200000个数字,我必须计算数字1。。。199999我需要一个由一个简单公式给出的函数,该公式使用基本运算,如+、*、mod等。我也知道哈希函数,但我没有找到任何适合这些需要的函数。我自己可能会想出一些函数,但我想使用一些经过测试的函数来给出合适的伪随机值。有什么类似的用法吗?< /P>

我想要一个函数f(x),它根据x值给出均匀分布的好的伪随机数。我知道线性同余生成器,但是它们在迭代中工作,也就是说,我提供初始种子,然后一个接一个地获得随机值序列。这不是我想要的,因为如果a想要得到序列中的第200000个数字,我必须计算数字1。。。199999我需要一个由一个简单公式给出的函数,该公式使用基本运算,如+、*、mod等。我也知道哈希函数,但我没有找到任何适合这些需要的函数。我自己可能会想出一些函数,但我想使用一些经过测试的函数来给出合适的伪随机值。有什么类似的用法吗?< /P> < P>你可以考虑乘法同余发生器。这些是没有加性常数的线性全等式:对于合适的常数a和c,Xi+1=aXi%c。将其展开几次迭代将使您确信Xk=akX0%c,其中X0是您的种子值。这可以用O(log(k))时间计算。不需要计算前199999就可以得到200000个值,你可以在大约18步的比例中找到它

实际上,对于具有加性常数的LCG,它也起作用。有一篇由F.Brown撰写的论文,“任意步长随机数生成”,Trans。是Nucl。Soc。(1994年11月)。基于本文,著名的蒙特卡罗软件包MCNP5使用了具有良好质量和log2(N)提前跳过特性的合理LCG。C++文章在这里。进一步发展如果这个想法(带有对数提前跳过的RNG)是一个相当不错的生成器系列,您可以使用一个简单的加密算法来加密数字1,2,3。。。由于加密是可逆的,每个输入号码都有一个唯一的输出。序列中的第200000个数字是
encrypt(key,200000)
。将DES用于64位数字,AES用于128位数字,您可以将自己的simple用于32位或16位数字。

哈希函数到底出了什么问题?