11

そこで、値 4 を 12 の異なる変数にランダムに分割するスクリプトを作成しようとしています。これを適切に行う良い方法が思いつきません。数値をランダム化して 0.33 (4 の 1/12) に近づけることを考えましたが、そうすると最後の数桁の優先度が低くなることがよくあります。以前にこのようなことを試した人はいますか、またはこれをできるだけランダムで均等に不均一にする方法について素晴らしいアイデアを持っていますか?

4

3 に答える 3

31

お気に入りの乱数ジェネレーターから12個の乱数を生成し、それらを呼び出しますr1..r12

それらをすべて合計し、合計を呼び出しますsum

の最初のランダムな分数は4です(r1/sum)*4。残りは明白なはずです。

于 2013-02-19T13:57:03.850 に答える
9

1より大きい任意の乱数を生成し、必要な合計に再スケーリングした後。

例:

  • 必要額:4
  • 乱数:1 2 3 4 5 6 7 8 9 10 11 12
  • 合計=78
  • 再スケーリングされた数値:

1を(1 * 4)/78に再スケーリング

2を(2 * 4)/78に再スケーリング

..。

12を(12 * 4)/78に再スケーリング

于 2013-02-19T13:58:21.553 に答える
2

次のアルゴリズムは、連続範囲にわたって(または、少なくとも、重複の確率が無視できるほど多くの可能な値を持つ離散範囲にわたって)均一に分散された乱数を生成できると仮定して、均一に分散されたパーティションを提供します。

のパーティションをt値に生成するにはk

  • k-1の範囲で均一に分散された値を生成します[0, t]

  • 0それらを並べ替えて、最初とt最後に追加します。

  • 隣接する差分をパーティションとして使用します。

于 2013-02-19T19:32:50.233 に答える