gpt4 book ai didi

c - 随机数生成器如何在 C 中工作?

转载 作者:行者123 更新时间:2023-12-01 13:56:08 25 4
gpt4 key购买 nike

我正在尝试生成 0 到 40(含)之间的随机数。所以我实现的代码是这样的-

 y=rand()%41;

但是每次我点击编译然后点击运行。它输出相同的随机数。例如,我循环运行了这个。

for(i=0;i<4;i++)
{
y=rand()%41;
printf("%d ",y);
}

每一次,输出都是相同的 4 个数字。它总是在终端上输出 14,2 等。不管怎样。

所以我的第一个问题是,为什么会这样?

其次,随机数生成器在 C 中如何工作?

我想因为我包含了 time.h 库,所以这些数字是通过一些使用系统时间的标准算法生成的。而且由于系统时间不断变化,每次运行程序时生成的数字也应该变化。

最佳答案

rand() 仅生成伪随机数。这意味着每次运行代码时,您都会得到完全相同的数字序列。

考虑使用

srand(time(NULL))

每次都得到不同的数字。事实上,rand 的一个可能实现是

next = next * 1103515245 + 12345;
return (UINT32)(next>>16) & RAND_MAX;

其中 next 定义为

static UINT32 next = 1;

调用 srand() 会改变 next 的初始值,从而改变你得到的“下一个”值。

关于c - 随机数生成器如何在 C 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10054922/

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