如何选择用C中的2个分配东西?

时间:2015-08-26 14:44:13

标签: c random struct probability

所以我有一个结构:

enum input_result get_human_player(struct player* human)
{
    char playerName[NAMELEN];
    printf("What is your name? ");
    fgets(playerName, NAMELEN, stdin);
    strcpy((*human).name, playerName);

    (*human).type = HUMAN;
    (*human).thiscolor = C_WHITE;
    (*human).counters = 0;

    return FAILURE;
}

如何制作它以便随机将其分配给C_WHITE或C_RED,并且有50/50的机会?

1 个答案:

答案 0 :(得分:1)

rand将返回一个随机整数。假设它是均匀分布的(可能不是真的,因为每个实现都不能保证),这个数字将是奇数甚至是50/50的机会。使用这个事实:

if (rand() % 2)
{
    //Do the first thing
}
else
{
    // Do the other one
}

**别忘了给随机数生成器播种。