如何为每个玩家生成不同的随机数?

两位玩家都获得相同的随机数! 我希望每个玩家得到一个不同的数字,因为他们掷骰子。 这是代码:

#include  #include  #include  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()函数为roll_a_dice() ,对于在粒度周期内进行的所有调用, rand()将最终返回相同的随机数。

移动srand ( time(NULL) );roll_a_dice()函数之外,只在main()调用一次。

你只需要播种一次。 将srand移动到main的顶部,它将起作用。

srand( int ); 用于初始化种子 。 每次调用rand()你都会获得一个新的随机值。 通过在roll_a_dice()调用srand() ,您每次都会roll_a_dice()种子。 只需在main()的开头移动srand() ()即可。