两名玩家获得相同的随机数!我希望每个玩家都得到不同的数字,因为他们正在掷骰子。 这是代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int roll_a_dice(void);
int main(int argc, const char *argv[])
{
int flag;
int answer1 = roll_a_dice();
int answer2 = roll_a_dice();
printf("Die 1 (rolled by player 1): %d\n", answer1);
printf("Die 2 (rolled by player 2): %d\n", answer2);
if (answer1>answer2) {
printf("Player 1 is starting!\n");
flag = 1;
} else {
printf("Player 2 is starting!\n");
flag = 2;
}
printf("Goodbye!\n");
return 0;
}
int roll_a_dice(void)
{
int r;
srand(time(NULL));
r = 1 + rand() % 6;
return r;
}
玩家们正在掷骰子。所以数字必须是1-6。 我该如何解决这个问题?
最佳答案
srand ( time(NULL) );
用于为伪随机数生成器提供种子。 time()
的粒度为 1 秒,如果每次调用 roll_a_dice()
函数时都播种 PNRG,则对于该粒度周期内进行的所有调用,rand()
最终将返回相同的随机数字。
将 srand ( time(NULL) );
移出 roll_a_dice()
函数,仅在 main()
中调用一次.
关于c - 如何为每个玩家生成不同的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558716/