岩石剪刀的随机数

时间:2014-03-12 15:52:41

标签: c random

只是一个简单的问题。 我对c ++很新。在这里,我创建了一个随机数生成器,它应该从1-3中得到一个随机数,然后每个数字对应于石头纸或剪刀。

问题是,每次都会剪刀(3)!!我做错了什么?

#include<stdio.h>
#include<stdlib.h>

int i, a, b;
int playerschoice, compchoice;

main()
{
    compchoice=rand() %3+1;
    printf("compchoice=%d",compchoice);

    if (compchoice == 1)
    {
        printf("\nThe computer is going with: Rock...\n");
        b = 0;
    }
    else if (compchoice == 2)
    {
        printf("\nThe computer is going with: Paper...\n");
        b = 1;
    }
    else if (compchoice == 3)
    {
        printf("\nThe computer is going with: Scissors...\n");
        b = 2;
    }

    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:4)

您需要为随机数生成器播种一个值,该值在每次运行时都会有所不同。

在致电rand()

之前,请执行以下操作
/* initialize random seed: */
  srand (time(NULL));

编辑 - 添加了更多信息

rand()函数是pseudo-random number generator。这基本上意味着,给定一个初始启动条件,该函数将产生一个出现的数字序列是随机的。

srand将做的是为您设置初始启动条件。 time(NULL)只返回自1970年1月1日以来的秒数。

有关详细信息,请查看此文章:http://www.cplusplus.com/articles/EywTURfi/

答案 1 :(得分:1)

随机数生成器的种子在程序启动时始终相同。 因此,所选的随机数总是相同的。

在程序开头添加此行,使用当前时间作为种子初始化随机数生成器:

srand(time(NULL));

答案 2 :(得分:0)

srand(time(NULL));放在compchoice=rand() %3+1;之前,以便它能正常运行,并且每次运行任何程序时都会生成随机数。