-1から6の範囲で乱数を生成しようとしていますが、乱数を生成するたびに範囲内の数値を取得する割合はパーセントで指定します。たとえば、パーセンテージのリストでは、最初のパーセンテージは6を生成する確率を持ち、2番目のパーセンテージは5を生成する確率を持ちます。数字はランダムに生成する必要があります。私はこれをCでコード化しようとしています。あなたのアイデアをありがとう。数値の確率を与えられた範囲内で乱数を生成する方法
答えて
0から100までの乱数を取得して、それに該当するパーセンテージ範囲を確認し、それに対応する値を割り当てることができます。例えば
:
0 - 5 : -1
5 - 25 : 0
25 - 31: 1
31 - 48: 2
48 - 50: 3
50 - 75: 4
75 - 87: 5
87 - 100: 6
EDIT:
使用すると、1つのまたは2つの配列の割合の境界を保存する1(5、25、31、48を意味し、50が必要になり、これを実装するには、75,87)と出力値を格納する別の配列(出力が完全にランダムであれば、ここでは順番に2番目の配列は必要ありません)。
そして、あなたは、これがOでに対応して何パーセントの範囲を見つけるためにバイナリ検索方法を使用することができます。これにより、0から100
間のランダムなint型の場合は0と100またはrand() % 100 + 1
の間のランダムな浮動小数点数を取得するためにrand() * 100.0/RAND_MAX
を呼び出して取得します(log n)時間である。インデックスを使用すると、対応する出力を見つけることができます(配列または関数を介して)
私は実際にこのようなことをしましたが、私はそれが間違っていると教えました。しかし、私のためにそれを明確にすることに感謝 – user1319817
これを実行する方法はほかにもありますが、おそらくこれが良いでしょう。あなたのパーセンテージに応じて各番号のコピー(-1〜6)。次に、配列内の要素をランダムに選択します。
これは、パーセンテージが0.5%のようなパーセンテージの場合、これは動作しません – SirGuy
これは宿題ですか?私は人間性を信じるためにそうではないと思います)
つまり、すべてのパーセンテージが100になるはずです。 0から100までの数字を生成し、どの括弧に当てはまるかを調べることができます。
あなたのパーセンテージは、[10,20,35,15,10,10]
である場合、すなわち次に第1ブラケットはとても10の下に生成された任意の数が6
x < 10 --> 6
10 <= x < (10+20) --> 5
(10+20) <= x < (10+20+35) --> 4
(10+20+35) <= x < (10+20+35+15) --> 3
をyeilds "< 10" であります
などです。たとえば、11.9のような精度のパーセンテージを満たすために、1から100の間のランダムな浮動小数点数を生成したいとします。
ない家庭仕事私は単純なテキストベースのゲームを作ろうとしていました。入力をありがとう:) – user1319817
私はそれを行うための最も簡単な方法は、以下の類推を考慮することであると思う:
あなたはラインを持っている場合は、[0,1]、あなたは1から4までの数を生成する分割と等価であると考えることができますS_1 = [0,1/4]、S_2 = [1/4,2/4]、S_3 = [2/4,3/4]、S_4 = [3/4,1]である。そうすると、[0,1]から数値を生成するとき、それがセグメントS_iに該当する場合、生成された数はiになります。
各数値に異なる確率を割り当てる場合は、p_iとして、p_iに従って異なるサイズのセグメントを分割するだけです。
たとえば、p_1 = 0.1の場合2、p_2 = 0.4の場合2、p_3 = 0.2の場合3、p_4 = 0の場合4。3の場合、S_1 = [0、p_1]、S_2 = [p_1、p_1 + p_2]、S_3 = [p_1 + p_2、p_1 + p_2 + p_3]、S_4 = [p_1 + p_2 + p_3、p_1 + p_2 + p_3 + p_4]
次に、[0,1]に一様乱数を生成し、それがS_iに含まれるかどうかをテストします。
あなたは良い点があります。これは私のソリューションに非常によく似ていますが、比率が正しい限り、範囲は実際にはあなたが使用したいと思うあらゆる範囲で可能です。パーセンテージと乱数ジェネレータがすでにその範囲にある場合、0〜1の範囲を設定するといいです。 – mltsy
100個の要素を持つように配列を作成し、-1から6までの数字で入力します。たとえば、15%のヒットを得るために-1が必要な場合は、15個の要素に-1を入力します。 は1から100までの乱数を生成し、単純に配列を検索すると、実際の結果に重み付けされます。
- 1. 確率分布で範囲内の乱数を生成する
- 2. Tensorflow変数として与えられた範囲で乱数を生成する方法
- 3. 与えられた範囲でN個の乱数を生成し、合計の合計を計算する
- 4. 与えられた範囲内の数字のシーケンスを作る
- 5. 確率で乱数を生成する
- 6. 低い数値を与える確率が高い乱数発生器?
- 7. INPUT(python)から範囲内の乱数を生成
- 8. 必要な確率で乱数を生成する方法は?
- 9. 範囲内で乱数を生成する
- 10. 与えられた範囲内のHeapsort
- 11. 整数範囲から正規分布乱数を生成する方法は?
- 12. 特定の範囲内の乱数を生成する
- 13. Fortran 77で指定された範囲の乱数を生成
- 14. 与えられた時間範囲を越える発生の回数
- 15. 与えられた範囲のシャッフルされた整数の複数のファイルを生成するC++
- 16. 1から10の範囲の乱数を生成する
- 17. 値に合計する個々の範囲内の乱数を生成
- 18. 与えられた数字のリストからJavaで乱数を生成する方法
- 19. 与えられた範囲
- 20. 与えられた範囲内の繰り返し数字を持つカウント数
- 21. N個の異なる範囲の乱数配列を生成するための効率的な方法
- 22. 範囲内の乱数
- 23. 与えられた範囲内のすべての素数を見つける
- 24. 範囲[M .... N]の乱数を平均で生成するX
- 25. メイクファイルの範囲で乱数を生成するには?
- 26. Pythonで特定の確率で乱数を生成する方法は?
- 27. テンソルフィットの値を与えられた範囲にする
- 28. で乱数を生成する乱数発生器<code>int generateRandom(int min, int max)</code>を作成する方法を同じ確率で0または1を生成するランダム発生器、与えられた0/1ランダムジェネレータ
- 29. 乱数onclickを生成し、生成された数値を数えますか?
- 30. Bashの範囲に一致する乱数を生成する
VTC-ersに。これは実際には非常に一般的なことです(ローカライズされたものとは反対ですが)。ちょっと複雑な形で記述されていますが、 – bitmask