私はランダムに4の値を12の異なる変数に分割するスクリプトを作成しようとしています。私はこれを適切に行う良い方法を考えることができません。私は0.33(4分の1の12)に近づくように数字をランダム化することを考えましたが、それはしばしば最後のいくつかの数字が過小優先順位になることにつながります。誰もこれの前にこのようなことをしようとしたか、これをできるだけランダムで均一に不均一にするための素晴らしいアイデアがありますか?数値をランダムな不等号に分割する
7
A
答えて
17
好きな乱数ジェネレータから12個の乱数を生成する場合は、r1..r12
とします。
これらをすべて追加します。合計額はsum
です。
4
の最初のランダム分数は(r1/sum)*4
です。残りは明白でなければなりません。
8
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
2
以下のアルゴリズムに再スケーリングが可能であると仮定すると、均一に分布パーティションを提供連続的な範囲にわたって(または、少なくとも、複製のオッズが無視できるほど十分に多くの可能な値を有する離散的な範囲にわたって)均一に分布した乱数を生成することができる。範囲[0, t]
でk-1
均一に分布値を生成
:
k
値にt
のパーティションを生成する。
これらを並べ替え、先頭に
0
、最後にt
を追加します。隣接する差分をパーティションとして使用します。
関連する問題
- 1. python numpyを不等な部分配列に分割する
- 2. 数字を等分に分割する
- 3. 2つの等しくないランダムな部分に分割する
- 4. スレッド間で不均等数を分割する
- 5. 均等に小数を分割する
- 6. 数値を等しいチャンクに分割する
- 7. NumPy配列を不均等な部分にシャッフルして分割する
- 8. 文字列を不等セグメントに分割するR
- 9. nodejsの配列を等号に分割する方法
- 10. 配列を等号のビンに分割する
- 11. ランダム化なしで等しいロー番号のデータフレームを分割する方法は?
- 12. データフレームを等分に分割する
- 13. 番号をランダムに生成された部分に分割する方法
- 14. ランダムに等配分で表示する
- 15. Bashで均等に分布するランダム
- 16. 不安定(シーク(一見ランダムな)行動)と分割()のpython
- 17. 浮動小数点数を等価/不等号と比較する
- 18. 2Dのランダムな点の均等分布
- 19. ランダムに画像を分割する、Matlab
- 20. python配列を等しい長さの値に分割する
- 21. 画面を均等に分割する
- 22. スイングコントロールを均等に分割する
- 23. 配列の等価/不等号
- 24. 半分の数値を分割して分割する方法
- 25. "割り当てを満たすために等号の右辺からの出力が不十分です。" Matlab
- 26. 不等号サイズのボタンJavaFX
- 27. AppEngine Datastoreの不等号フィルタ
- 28. Python - リストのリスト内の数字を均等に分割する
- 29. ストリームを等しい数のビンに分割する
- 30. 文字列の不等記号をトークンに分割していますか? (Java/Regex)
これは素晴らしかった!どうもありがとう! – Tom
このソリューションでは、論理的に一様に分布する数値の集合は生成されませんが、本当に均一なものを生成できない理由を理解していないため、ほとんどの人が選択するようなソリューションです。 –
@ woodchips:この批判の正体を示すのは役に立ちましたが(それは正しいが)、一様に分散したパーティションを生成する答えを提供することがさらに役立つだろう。私は後者をやろうとしましたが、それも正しいとは確信していません。 – rici