1から10までの範囲でランダムな整数を一様に生成する関数を与えると、1から200までの範囲でランダムな整数を一様に生成する関数を書く方法は?ランダムな整数の範囲を1から200まで拡張する方法
1
A
答えて
2
がu()=uniform(1,10)
を聞かせて、あなたが均一な機能の3回の呼び出しを必要とする、あなたの新しいランダム変数 `
v() = 10*(u()-1) + u() + 100*I[u()>5]
ノートを書くことができ、3つ目はいえブール変数することができます。ここで私はインジケータ機能
I[x] = x ? 1 : 0 // if x is true then 1 else 0.
代わりのu()>5
として使用するには、同等(uが偶数である)u()%2==0
を定義することができます。 3つ目の値がバイナリ値としてのみ使用されているにもかかわらず、10 * 10 * 2
という200の別個の値を作成すると考えることができます。
ここ和又は最大値のいずれかが適合値として使用することができ、最後の列は、理想的な分布の違いを示しawk
実装ヒストグラム試験
awk 'function u() {return int(1+rand()*10)}
BEGIN {srand(); trials=100000;
for(i=1;i<=trials;i++) v[10*(u()-1)+u()+100*(u()%2)]++;
for(k in v) print k, v[k], (v[k]-trials/200)^2}' | sort -k3nr
あります。より洗練された分析のために、より複雑なテスト、カイ2乗などがあります。
1
基本関数を3回呼び出し、結果をスケールします。
int rand1to200() {
return ((rand1to10() - 1)*100 +
(rand1to10() - 1)*10 +
(rand1to10() - 1)*1)%200 + 1;
}
関連する問題
- 1. ゼロから始まらない範囲のランダムな整数を生成する
- 2. ThreadLocalRandomランダムな整数がない範囲
- 3. 0-1から0-10までの値の範囲を調整する方法
- 4. vimscriptで選択範囲を拡張する方法
- 5. 要素の範囲の内容を拡張または拡張しますか?
- 6. 0から1の間のランダムな10進数の範囲を作成する方法
- 7. 範囲からランダムな10進数を取得するには?
- 8. 整数の範囲でmatlabのランダムな配列を作成する
- 9. マップに範囲の整数の範囲を格納する方法
- 10. Excel VBA:単純に範囲を1つ拡張できますか?
- 11. に軸の範囲を拡張-1その軸がR
- 12. 整数範囲から正規分布乱数を生成する方法は?
- 13. javascriptで選択範囲を後方に拡張する方法は?
- 14. 2つの範囲の間のランダムな整数を生成する
- 15. SQLで日付範囲を整数(整数)に変換する方法
- 16. 4つの方向のVBAでアクティブセルの範囲を拡張し
- 17. 特定の範囲の整数値を確認する方法
- 18. Googleスプレッドシートの整数範囲の値をチェックする方法は?
- 19. 別の範囲から数値の範囲をフィルタリングする方法
- 20. JAVAで数字のランダムな範囲に乱数をつける
- 21. C++、乱数1から6の範囲
- 22. Sony Remote Camera APIのアクセスポイントの範囲を拡張する方法は?
- 23. MATLABの負の範囲と正の範囲の間のランダムな整数の生成
- 24. 範囲からのランダム反復値
- 25. PostgresSql case文の整数の範囲を調べる方法
- 26. 範囲内の整数を保持しますか?一定の範囲内の整数を保つために
- 27. Pythonの整数範囲
- 28. ベクトルへの整数範囲
- 29. 浮動小数点数の範囲を拡張しますか? (均一な分布を維持する)
- 30. ランダム。範囲ゲームオブジェクトローテーション
OPの質問にお答えできませんでした。あなたの答えは、 '10^n'が' 200'で割り切れる正の整数 'n'(ここでは' n == 3')がある場合にこの特殊なケースで動作します。しかし、質問に「1から173までの乱数」と表示された場合はどうでしょうか?あなたの忠誠心は1から173までのすべての数字に均等に確率を与えます。 – user7771338
@FREE_AND_OPEN_SOURCE OPの狭い質問に答えます(10,200)。 OPの投稿は一般的な答えの欲求を示すものではありません。 'n'(200)が' m'(10)のべき乗の要素でないかどうかについては、答えがより関与するだろう。しかし、なぜそこに止まるの? 'm.n'を_any_' int'の値で使うことができました。おそらく0で負でもあります。その解決法は、特に 'm> sqrt(RAND_MAX)'とIMOが、OPが今のところ準備ができている以上にはるかに関わっているでしょう。 – chux