【问题标题】:How come rand is not producing random numbers in my code? [duplicate]为什么 rand 没有在我的代码中产生随机数? [复制]
【发布时间】:2020-02-01 21:02:22
【问题描述】:

我想随机化变量 a 和 b 以输出 a,b 格式的随机数 1 到 4。但是,当我运行以下代码时,无论运行多少次,输出总是相同的。例如,输出始终为:4,3(相同的输出显示 10 次。)

我在这里做错了什么?有人可以指出我正确的方向吗? 谢谢!

#include <iostream>

using namespace std;

int main() 
{
    int x;
    int a, b;
    a= rand() % 4 + 1; 
    b= rand() % 4 + 1;
    x = 0;

    while (x < 10) {
    x++;

    cout << a << "," << b << endl;

    }
    return 0;
}

【问题讨论】:

标签: c++ random while-loop random-seed


【解决方案1】:

您需要先设置时间种子,然后调用rand(),否则您将始终获得相同的值:

int a, b;        //store random number
std::srand(std::time(0)); // set the time seed   

for(int i = 0; i != 10; ++i)
{
    a = rand() % 4 + 1;
    b = rand() % 4 + 1;
    cout << a << "\t" << b << endl;
}
  • 不要忘记包含 &lt;ctime&gt; 标头。

【讨论】:

    【解决方案2】:

    我在这里做错了什么?有人可以指出我正确的方向吗? 谢谢!

    您设置了一次ab,因此它们具有相同的值。要解决这个问题,请将它们设置在循环内,以便在每次迭代时赋予它们一个新值:

    while (x < 10) {
        x++;
        a = rand() % 4 + 1;
        b = rand() % 4 + 1;
    
        cout << a << "," << b << endl;
    }
    

    如果您不想每次都使用相同的值,可以调用

    srand(time(0)); // before the loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多