Apexで乱数ジェネレーターのシードを設定する方法はありますか?そしてそうならば; どの関数を使用しますか?
2 に答える
ApexでRNGをシードすることはおそらく不可能です。繰り返し可能な乱数シーケンスが必要な場合は、シードされた疑似乱数ジェネレーターを自分で実装する必要があります。
Apexプラットフォームでは、乱数を生成するために利用できるエントロピーの膨大なソースがあると確信しています。ジェネレーターをシードする必要はありません。
Salesforceに組み込まれている乱数ジェネレータをシードする方法はありません。私はあなたと同じ船に乗っていました。繰り返し可能な乱数を作成できるように、シードを使用できるようにしたかったのです。
だから、自分でRNGを書いてみようと思いました。私はアルゴリズムを求めてインターネットを精査するのに何日も費やしました。さまざまなソースから借用した関数のかなり包括的なライブラリをまとめることができました。クラスは、メインのRNGクラスである「Random.cls」とテストコードである「Random_Test.cls」です。
次の方法があります。
- nextInteger(upperLimit)
- nextLong(upperLimit)
- nextDouble(upperLimit)
- nextUniform()-Math.Random()と同じ関数で、0.0から1.0の間のDoubleを返します。
- nextIntegerInRange(lowerLimit、upperLimit)
- nextLongInRange(lowerLimit、upperLimit)
- nextDoubleInRange(lowerLimit、upperLimit)
- shuffle(List <Object>)-元のリストの順序を破棄します
- shuffleWithCopy(List <Object>)-リストの元の順序を保持したい場合に備えて、リストのシャッフルされたコピーを返します( "shuffle(List <Object>)"よりも効率が悪い)
「Random.cls」には、乱数ジェネレーターについて詳しく知りたい場合に備えて、私が借りたソースが記載されています。
コードを必要な人のためにGitHubに公開しました:https ://github.com/DeviousBard/Salesforce/tree/master