【发布时间】:2015-06-03 13:38:38
【问题描述】:
我已经阅读了很多关于如何编写自己的随机数生成器的指南,所以我对你自己编写随机数生成器的原因很感兴趣,因为大多数语言已经提供了生成随机数的函数:
像 C++
srand(time(NULL));
rand();
C#
Random rand = new Random();
rand.Next(100);
和Java
Random rand = new Random();
rand.nextInt(0, 100);
我主要是在寻找使用您自己的优势。
【问题讨论】:
-
您的问题听起来是基于观点而非技术事实。
-
@TimStoddard 我想这个问题会让你投反对票;因为答案将非常广泛/基于意见。尽管如此:编写您自己的客户 PRNG 的唯一原因可能是:您对现有的属性不满意。含义:你对整个学科有非常深刻的数学理解;你会认为这是一个非常特殊的用例;您将需要一个非常特殊的解决方案。创建 PRNG 的唯一其他原因是学习如何去做。并在这条路线上遇到许多潜在的错误。
-
我能想到这个问题的技术性、非基于意见的答案。特别是,C++ 中的 I
rand即将被弃用,其背后的原因应记录在各种标准文档中。可以解释 C++11 随机数生成器功能背后的原因,并举例说明 C++11 中未提供的随机数生成器类型。可以添加对 C++11 发行版的讨论,以及您可能想要编写自己的发行版的原因。没有任何强烈的意见依据。你也可以用意见来回答这个问题,但谁在乎呢? -
@Yakk 但问题仍然非常广泛。询问现有 PNRG 实施的技术细节是一回事。一般来说,谈论“所有人”是完全不同的事情。
-
@ControlAltDel 在编程上下文中,除非上下文另有说明或区别对于尝试做的事情很重要,否则可以理解“随机”表示“伪随机”。
标签: java c# c++ random numbers