2014-03-12 30 views
0

只是一个简单的问题。 我对C++很陌生。在这里我创建了一个随机数发生器,它应该从1-3开始得到一个随机数,然后每个数字对应岩石纸或剪刀。Rock Paper Scissors的随机数

问题是,它每次都会选择剪刀(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; 
} 
+1

这个问题被标记为C++,但它看起来非常像C. – JustSid

+0

如果你满意下面的答案,你能接受它吗? – Akshay

回答

4

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

调用rand()

/* initialize random seed: */ 
    srand (time(NULL)); 

编辑之前执行以下操作 - 增加了更多的信息

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

srand会为你设定最初的起始条件。时间(NULL)刚刚返回的秒数自1月1日,1970年

看一看这篇文章的详细信息:http://www.cplusplus.com/articles/EywTURfi/

+0

非常感谢,我永远不会知道这样做!那实际上是做什么的? – user3263564

+0

我已经编辑了更多信息的原始答案。 – Akshay

1

随机数发生器种子总是在程序开始时一样。 因此选择的随机数总是相同的。

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

srand(time(NULL)); 
0

srand(time(NULL));compchoice=rand() %3+1;之前,所以它会正常工作,它会产生随机数的每个时间当你运行任何程序。

相关问题