gpt4 book ai didi

c - 为什么我总是用 rand() 得到相同的随机数序列?

转载 作者:行者123 更新时间:2023-11-30 16:32:04 25 4
gpt4 key购买 nike

这是我第一次用 C 尝试随机数(我怀念 C#)。这是我的代码:

int i, j = 0;
for(i = 0; i <= 10; i++) {
j = rand();
printf("j = %d\n", j);
}

使用这段代码,每次运行代码时我都会得到相同的序列。但如果我在 for 循环之前添加 srand(/*somevalue/*) ,它会生成不同的随机序列。谁能解释一下为什么吗?

最佳答案

你必须播种它。与时间一起播种是个好主意:

srand()

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
srand ( time(NULL) );
printf ("Random Number: %d\n", rand() %100);
return 0;
}

您会得到相同的序列,因为如果您不调用 srand()rand() 会自动使用值 1 进行播种。

编辑

由于评论

rand() 将返回 0 到 RAND_MAX(在标准库中定义)之间的数字。使用modulo运算符 (%) 给出除法 rand()/100 的余数。这将强制随机数在 0-99 范围内。例如,要获得 0-999 范围内的随机数,我们将应用 rand() % 1000

关于c - 为什么我总是用 rand() 得到相同的随机数序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303292/

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