只是一个简单的问题。 我对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;
}
答案 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;
之前,以便它能正常运行,并且每次运行任何程序时都会生成随机数。