乱数の取得で範囲内の数値に確率を設定するには?

解決


モルモル  2002-09-11 21:50:32  No: 104898

乱数の取得で数値に確率を設定することはできますか?

例えば1〜5までの数値で、1を取得する確率は20%、3は12%などです。

よろしくお願いします。


たかみちえ  URL  2002-09-11 22:42:26  No: 104899

考え方を変えて見ましょう。1〜5ではないとします。
  たとえば、1〜50の乱数を作って、
1〜20なら1とみなす。
21〜30なら2とみなす…
  とやれば、ある程度起こりやすい起こりにくいは設定できます。

  ただしこれでも、ちゃんと確率どおりかというとそうでもないようで、
1が出やすいことがあったり、かたよったりしやすいようです。
(0〜25くらいの乱数を作る関数を作ったことがあるんですけど、どうも出にくい数字があるような気がします)

  確実にやるなら、自前の関数でほかの乱数理論を使って、乱数を作るか、
rndを何回か繰り返すかするしかないですね。

  標準関数では、シード値を、今の日付と時刻から割り出すようなことを聞いたことがあるので、
RandamizeとRndを連続して実行すると、どうしてもむらが出てくるのかも。


モルモル  2002-09-13 17:09:38  No: 104900

たかみちえさんありがとうございます。
返事遅くなってすみません。

もっとたくさんの意見を聞きたいので、もう少し待ってみようと思います。
他の乱数理論について何か知っていたら、お願いします。


たかみちえ  URL  2002-09-14 08:48:53  No: 104901

みつけたみつけた(*^_^*)

  Delphiのものですけど、
http://www.nifty.ne.jp/forum/fdelphi/samples/01200.html
最新乱数アルゴリズムで、乱数を生成するユニット(モジュール)です。

  Delphiのものも、この程度なら、あとJavaScriptを見たことがあれば、
そんなに難しいものではないと思いますけど…。

・Delphiでは"(*〜*)","{〜}",などがコメント(つまり前半ほとんどコメント)になります。
・shlなどのビットずらし演算子はVBにはありませんけど、乗算やorなどでどうにかできると思います。サンプルもあるようですし。

  それから、"理論"というのはちょっと正しくなかったですね^^;
正確には"アルゴリズム”(どっちもたいしてかわらない?)です。


モルモル  2002-09-17 21:51:28  No: 104902

たかみちえさんありがとうございます。
またまた返事遅くなってすみません^^;

このサンプルや前回教えて頂いたやり方で、いろいろ試してみようと
思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加