随机数不正确? (C ++)

时间:2014-03-24 03:32:10

标签: c++

我目前正在使用C ++中的这些函数来查找卡片的数字和套装。

  int getnumber () {
             srand(time(0));
             int number ;
             number = rand()% 13 + 1;
             return number;
             };

         int getsuitn () {
             srand(time(0));
             int suitn;
             suitn = rand() % 4 + 1;
             return suitn;
             }

输出始终只是类的默认构造函数,我拥有完成这项工作所需的所有库,我做错了什么?

2 个答案:

答案 0 :(得分:3)

使用相同的种子,每次都会生成相同的序列。由于您使用当前时间以秒为单位播种,因此您在同一秒内进行的每个呼叫都将从序列中获得相同的第一个数字。你的整个程序可能会在不到一秒的时间内运行,所以它们都会得到相同的结果。

在程序开始时将随机数生成器播种一次

答案 1 :(得分:0)

问题:你使用的是c ++ 11吗?

您应该使用<random>标头。这些函数将在C ++ 14中被弃用。如何使用<random>

的示例

cppreference example