【问题标题】:Generate two random numbers in a row won't work in C? [closed]连续生成两个随机数在C中不起作用? [关闭]
【发布时间】:2014-05-14 21:31:49
【问题描述】:

我试图用 C 连续获得两个随机数:

#include <time.h>
#include <stdlib.h>
void testcollgenarray() {
    for(int i=0; i<10; i++)
    {
        int r1 = rand() % 256;
        int r2 = rand() % 256;
        cout << r1 << endl;
        cout << r1 << endl;
    }
}

显然,在每个循环中,随机数生成器都输出相同的数字:

207
207
41
41
98
98
49
49
6
6
8
8
95
95
79
79
154
154
252
252

【问题讨论】:

  • 错字:你打印r1两次,而不是r1然后r2
  • 啊grrrrrr,我需要休息,今天工作太多了。
  • 这段代码也不是C。错误的标签。

标签: c random


【解决方案1】:
    cout << r1 << endl;
    cout << r1 << endl;
    //       ^-- You're printing r1 twice

【讨论】:

  • 这与打印 r1 两次无关。每次运行代码时都会获得相同的随机数。
【解决方案2】:

您应该为随机生成提供种子。例如在随机生成之前使用这行代码一次:

srand(time(0));

使用当前时间进行随机生成。

【讨论】:

  • 在进行需要相同随机数的实验时,设置自定义种子也很有用。规则是:相同的种子 -> 相同的随机数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 2018-02-05
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多