2012-08-14 102 views

回答

2

在Apex中可能无法播种RNG。如果你需要一个可重复的随机数序列,你必须自己实现一个种子伪随机数发生器。

在Apex平台上,我确信他们有一个巨大的熵来源可用于生成随机数,并且您不需要为发生器播种。

+0

你有关于如何实现一个随机数发生器的任何提示? – 2012-08-20 08:21:11

+0

你应该解释为什么'Math.random()'不足以满足你的需求。维基百科在[伪随机数字生成](http://en.wikipedia.org/wiki/Pseudorandom_number_generator)上有一篇不错的文章,你可以看看。 – tomlogic 2012-08-20 17:30:27

+0

这就是你所说的;我需要一个可重复的随机数序列。感谢您的链接,我会研究它。 – 2012-08-21 11:49:10

1

无法在Salesforce中为内置随机数生成器生成种子。我和你在同一条船上。我希望能够使用种子,以便我可以创建可重复的随机数。

所以,我想我会试图写我自己的RNG。我花了很多天在互联网上寻找算法。我能够拼凑出一个相当全面的从各种来源借用的函数库。这些类是:“Random.cls”,它是主要的RNG类,“Random_Test.cls”是测试代码。

它具有以下的方法:

  1. nextInteger(UPPERLIMIT)
  2. nextLong(UPPERLIMIT)
  3. nextDouble(UPPERLIMIT)
  4. nextUniform() - 功能相同的Math.random()来返回0.0到1.0之间的Double。
  5. nextIntegerInRange(LOWERLIMIT,UPPERLIMIT)
  6. nextLongInRange(LOWERLIMIT,UPPERLIMIT)
  7. nextDoubleInRange(LOWERLIMIT,UPPERLIMIT)
  8. 洗牌(名单<对象>) - 破坏了原有的列表
  9. shuffleWithCopy的顺序(清单<对象>) - 如果您希望保留清单的原始订单(效率低于“洗牌(清单<对象>)”),则返回清单的清洗副本

“Random.cls”记录了我希望阅读有关随机数生成器的更多信息时借用的来源。

我把代码出在GitHub上的人谁想要它:https://github.com/DeviousBard/Salesforce/tree/master