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

时间:2016-04-11 20:32:32

标签: c random srand

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

#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。 我该如何解决这个问题?

3 个答案:

答案 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() 在你的主()的开头。