gpt4 book ai didi

c - Rand() 在 C 中不是唯一的

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:42 25 4
gpt4 key购买 nike

我正在使用 rand() 函数生成随机巧克力。即使我已经播种时间,rand() 总是给我相同的数字,我不确定如何解决它?

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


int main() {
/* Seed the random number generator */
srand48(time(0));
double t=rand()%5;
printf("Your selected chocolate will be: \n");
if(t==0){
printf("Caramel\n");
}
else if(t==1){
printf("Milk\n");
}
else if(t==2){
printf("Sweet\n");
}
else if(t==3){
printf("Semi-sweet\n");
}
else {
printf("Dark\n");
}

return EXIT_SUCCESS;
}

谢谢!

最佳答案

正如其他人在评论中指出的那样,函数 srand48 不会为 rand 提供种子;它为 lrand48 和相关函数提供种子。来自man page :

The srand48(), seed48() and lcong48() functions are initialization functions, one of which should be called before using drand48(), lrand48() or mrand48(). The functions erand48(), nrand48() and jrand48() do not require an initialization function to be called first.

您需要调用srand使用参数 time(0)rand 函数播种到当前系统时间。

此外,为什么要使用 double 类型来存储从 rand 返回的值?使用足以在您的系统上包含 RAND_MAX 的整数类型;通常是 shortint

关于c - Rand() 在 C 中不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290513/

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