2012-08-14 54 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