如何为每个玩家生成不同的随机数?
两位玩家都获得相同的随机数! 我希望每个玩家得到一个不同的数字,因为他们掷骰子。 这是代码:
#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()
()即可。