gpt4 book ai didi

c - 这段代码在哪里生成随机数?

转载 作者:太空狗 更新时间:2023-10-29 16:03:41 25 4
gpt4 key购买 nike

我遇到了 rgba的浮点随机数生成器:

http://rgba.org/articles/sfrand/sfrand.htm

解释清楚,代码简单。有一个问题:我无法弄清楚随机位是从哪里来的。下面的代码片段:

static unsigned int mirand = 1;

float sfrand( void )
{
unsigned int a;
mirand *= 16807;
a = (mirand&0x007fffff) | 0x40000000;
return( *((float*)&a) - 3.0f );
}

我确实尝试过 compile this function并且始终得到 -0.995993 的结果,如果 mirand1 开头,这就有意义了。我错过了什么,或者 mirand 只是种子?

最佳答案

事实是,该代码不会生成随机数……它会生成伪随机 数。假设你从同一个种子开始,外行人想象正在发生的事情的方式是你只是在浏览一个巨大的“随机”数字列表。最终,数字会自己重复,但一个好的公式可以使这种重复以较大的间隔发生。

为了澄清,请看一下 Excel 使用的兰特公式:http://support.microsoft.com/kb/828795

关于c - 这段代码在哪里生成随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8109703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com