rand()只将变量设置为0

时间:2016-09-25 20:55:54

标签: c++ random ctime

我正在制作摇滚,纸张,剪刀游戏,我设置计算机选择的方法之一是通过rand()。我#include <ctime>,使用srand(time(0));在main的开头播种rand,并在computerWeaponChoiceV = (rand() % 3) + 1;的函数定义中调用它。但是,当我测试我的程序时,它总是将computerWeaponChoiceV打印为0.

我对rand()做错了什么?如果您需要更多我的代码,请告诉我。

1 个答案:

答案 0 :(得分:-4)

我不习惯用c ++(只用c ++编程一次)但我认为这个问题是关于rand声明的。

Try using rand() % 3 + 1; 

如果这对于时间(0)不起作用,则可能需要“NOW”值才能正确随机化(通常编程语言需要几毫秒来随机化)。 PD:我对时间的说法可能是错的,如果这两个解决方案没有为你服务,那就在那里发表评论。

有一个从1到10工作的兰德的例子:

/* rand example: guess the number */
#include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

int main ()
{
  int iSecret, iGuess;

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

  /* generate secret number between 1 and 10: */
  iSecret = rand() % 10 + 1;

  do {
    printf ("Guess the number (1 to 10): ");
    scanf ("%d",&iGuess);
    if (iSecret<iGuess) puts ("The secret number is lower");
    else if (iSecret>iGuess) puts ("The secret number is higher");
  } while (iSecret!=iGuess);

  puts ("Congratulations!");
  return 0;
}

干杯!