两位玩家都获得相同的随机数!我希望每个玩家得到一个不同的数字,因为他们掷骰子。 这是代码:
#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。 我该如何解决这个问题?
答案 0 :(得分:5)
srand ( time(NULL) );
用于为伪随机数生成器播种。 time()
的粒度为1秒,如果您在每次调用roll_a_dice()
函数时为PNRG播种,对于在粒度期内进行的所有调用,rand()
将最终返回相同的随机号码。
将srand ( time(NULL) );
移出roll_a_dice()
功能,仅在main()
中调用一次。
答案 1 :(得分:0)
你只需要播种一次。 将srand移动到main的顶部,它将起作用。
答案 2 :(得分:0)
srand( int );
用于初始化种子。
每次你拨打rand()
时都会从那里开始
获得一个新的随机值。致电srand()
中的roll_a_dice()
你每次都要重新种子。只需移动srand()
在你的主()的开头。