Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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
Random 为什么这段代码会生成伪随机数?_Random - Fatal编程技术网

Random 为什么这段代码会生成伪随机数?

Random 为什么这段代码会生成伪随机数?,random,Random,我正在读这一页: 其中,以下函数用于创建无需解释的随机数: function IntNoise(32-bit integer: x) x = (x<<13) ^ x; return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0); end IntNoise function 函数IntNoise(32位

我正在读这一页: 其中,以下函数用于创建无需解释的随机数:

function IntNoise(32-bit integer: x)             

    x = (x<<13) ^ x;
    return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);    

  end IntNoise function
函数IntNoise(32位整数:x)

x=(x与所有PRNG一样,熵输出受熵输入的限制。因此,它至少与
rand()
(完全不是随机的)一样是非随机的

George Marsaglia开发了一套称为“Diehard tests”(,)的测试,用于测试PRNG的某些有用特性,希望任何具有这些特性的PRNG在直觉上都可能对您需要PRNG解决的任何问题有用。如果您愿意,您可以在
IntNoise
上运行这些测试


很可能您提供的
IntNoise
函数不如通用伪随机数生成器。通用伪随机数生成器很难找到,大多数人会反复使用相同的几个。但是,
IntNoise
是无状态的,这是一个很好的属性,也很少见。

没有什么是不常见的真正随机。定义足够高。@SLaks:我实际上不知道,我只是想问是否有人能给我提供这个公式背后的推理,而不是“让我们用素数做随机运算,这样结果就会显得随机”为什么这个标记的C和C++?你在你的问题中使用了三个不同的术语:伪随机的、真正的随机的和高熵的。从技术上讲,你使用这个函数时所得到的唯一的“熵”是你传递给它的种子(32位)。其他的都是确定性的。它绝对不是“真正的随机”。.我认为这意味着你的问题是开放式的,对于这种QnA风格来说讨论太多,获得答案的更好方法是研究教科书中的随机数生成。此代码映射输入值(
x
)对于一个与该输入几乎没有明显相似之处的数字。这样,它在道德上等同于一个带种子的
rand
函数。两者都是完全确定的。