【发布时间】:2016-11-18 22:33:14
【问题描述】:
作为我课程的一部分,我需要找到并重新编码一个 rand() 随机数生成器,它输出与原始数字相同的数字。起始顺序为 1804289383 846930886 1681692777 1714636915 1957747793 424238335 719885386 1649760492 596516649 1189641421 1021@39> 生成
#include <stdlib.h> /* rand */
#include <iostream>
using namespace std;
int main ()
{
for (int i = 0 ; i< 10 ; i++) {
cout << rand() << " ";
}
cout << rand();
return 0;
}
我的问题是我找不到这个生成器的原始来源,而且我不知道如何从生成器的完整序列(长度为 100 个数字)中找出生成器的工作方式。有人可以帮我找到原始生成器或教我如何从其序列中找到生成器吗?谢谢!
【问题讨论】:
-
我不确定我是否理解。您只是在问如何找出默认种子是什么?
-
或者你需要知道
rand()使用的是什么RNG算法? -
rand()使用的算法不是标准化的 - 这取决于您的实现。如果您的问题是寻找起始种子,请使用srand()- 那么您将知道起始种子,并且能够在闲暇时更改它。 (请记住,通常只需要调用一次srand())。 -
我需要找到RNG算法。我已经搜索并找到了 Eugene Sh 的链接。提供,它没有给我我正在寻找的解决方案。那里的发电机与我正在寻找的发电机不同。生成器在 gcc 4.9.2 中,但是源代码让我很困惑。
-
我真的不明白这样一个任务的意义。它必须至少包含算法的名称或对“原始”的任何其他引用。
标签: c++ c random sequence-generators number-sequence