gpt4 book ai didi

c - 在 rollDice 函数中调用 srand(time(NULL)) 时出现问题

转载 作者:太空狗 更新时间:2023-10-29 15:46:01 24 4
gpt4 key购买 nike

当我最初在 rollDice() 函数中使用 srand(time(NULL)) 时,它不起作用。但是当我把它放在主要的时候,它就起作用了。这是为什么?你能告诉我逻辑吗?

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

int rollDice(void) {
return (1+rand()%6) + (1+rand()%6);
}
int main(void) {
int roll;
srand(time(NULL));
roll = rollDice();
printf("You rolled %d.\n", roll);

enum Gamestatus {WON,LOST,CONTINUE};
enum Gamestatus status;

while(status==CONTINUE){
printf("You are rolling again: \n");
printf("You rolled %d\n", roll = rollDice());

if (targetPoint==roll){
printf("You win!");
status=WON;
}
else if(7==roll){
printf("You lost!");
status=LOST;
}
else
status=CONTINUE;
}
return 0;
}

最佳答案

假设您有数百万本书,其中一排排随机数字。在获得随机数之前,您需要选择一本书。

在你有一本书之后,要获得随机数,请按顺序从书中读取数字。换本书得到另一个随机数序列。
换到同一本书会从书中的第一个数字重新开始排序。

srand()选择一本书,从头开始随机数
rand() 从所选书籍中读取下一个数字

如果将 srand() 放入循环中,实际上是从同一本书的开头重新开始随机数序列。

解决方案:选择一本书一次,并永远从中读取数字。

在 C 程序中,如果您不“选择一本书”,则随机数来自第 1 本书,或者换句话说,没有 srand() 调用时,函数 rand() 的行为就像调用了 srand(1) 一样。

关于c - 在 rollDice 函数中调用 srand(time(NULL)) 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570803/

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