【问题标题】:Same random characters generated every time in C++ [duplicate]每次在 C++ 中生成相同的随机字符 [重复]
【发布时间】:2014-03-27 05:19:20
【问题描述】:

我正在尝试编写代码以返回随机字符,因此我编写了以下代码:

static char prepare-data()
{
    Sleep(rand()%500); // sleep random amount
    int n = rand()%26;
    char c = (char)(n+65);
    return c; // return random character
}

static void writer()
{
    int i, writePt = 0;
    char data;
    for (i = 0; i < data_length; i++)
    {
        data = preparedata(); // go off & get data ready
        buffers[writePt] = data; // put data into buffer
        cout<<"writer thread: buffer["<<writePt<<"]="<<data<<endl;
        writePt = (writePt + 1) % num_total_buffer;
    }
}

但每次我运行代码时都会得到相同的字符 这算不算问题

【问题讨论】:

  • 在程序开始时为随机数生成器提供一个种子。 srand(时间(NULL));
  • 您需要查看随机数生成器。这个问题几乎每天都会出现在 SO 上。
  • 如果你每次都想要一个不同的随机数,这只是一个问题......见xkcd.com/221

标签: c++


【解决方案1】:

也许你想添加

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

在使用 rand() 之前

【讨论】:

  • 是的,但这在上面链接的重复问题中有所涉及。不用再回答了。
  • 你是对的,我会删除这个答案。
  • @YuanhangGuo 不用删。该话题最终将被关闭。与此同时,享受你从赞成票中获得的代表。你没有多少atm,你可以用它。 :P
猜你喜欢
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2011-06-12
  • 2017-07-25
相关资源
最近更新 更多