【发布时间】:2011-08-16 15:06:51
【问题描述】:
所以我是 C++ 新手,正在尝试学习一些东西。因此,我正在尝试制作一个随机数生成器(如果您愿意,可以使用 RNG 或 PRNG)。我有 RNG 的基本知识,比如你必须从种子开始,然后通过算法发送种子。我坚持的是人们如何提出上述算法。
这是获取种子的代码。
int getSeed()
{
time_t randSeed;
randSeed = time(NULL);
return randSeed;
}
现在我知道在 C++ 中有预构建的 RNG,但我希望学习的不仅仅是复制其他人的工作并尝试弄清楚。
因此,如果有人能将我带到我可以阅读的地方或向我展示如何为此提出算法的示例,我将不胜感激。
【问题讨论】:
-
你读过这篇文章吗? gnu.org/software/gsl/manual/html_node/…
-
PRNG 的设计与语言无关,与数论和代数有关,而不是编程。如果您的目标是通过一些示例来学习 C++,那么您应该寻找不同的东西。如果你想了解 PRNG 设计,你应该删除提到 C++ 的部分。
-
@Seth Carnegie 我读过那篇文章,但我无法真正理解它想要表达的意思。
-
@Cistoran:了解什么是好的 RNG 需要大量的数学知识;统计学、数论、群论等(其中大部分超出了我的知识和耐心水平)。这不是我建议你随便进入的那种事情。考虑到正如您所说,这将是重新发明轮子,因此还有更多值得学习的东西。
-
有几个人略微不鼓励这种追求。我说去吧。无论您感兴趣的领域是什么,请关注它。不要让人们说它不实用打扰你——它可能不实用,但它应该是有教育意义的。随机数会带你进入许多程序员从未涉足的领域——小游戏、数论、统计——所有这些都值得学习。
标签: c++ algorithm random numbers seed