乱数の取得で数値に確率を設定することはできますか?
例えば1〜5までの数値で、1を取得する確率は20%、3は12%などです。
よろしくお願いします。
考え方を変えて見ましょう。1〜5ではないとします。
たとえば、1〜50の乱数を作って、
1〜20なら1とみなす。
21〜30なら2とみなす…
とやれば、ある程度起こりやすい起こりにくいは設定できます。
ただしこれでも、ちゃんと確率どおりかというとそうでもないようで、
1が出やすいことがあったり、かたよったりしやすいようです。
(0〜25くらいの乱数を作る関数を作ったことがあるんですけど、どうも出にくい数字があるような気がします)
確実にやるなら、自前の関数でほかの乱数理論を使って、乱数を作るか、
rndを何回か繰り返すかするしかないですね。
標準関数では、シード値を、今の日付と時刻から割り出すようなことを聞いたことがあるので、
RandamizeとRndを連続して実行すると、どうしてもむらが出てくるのかも。
たかみちえさんありがとうございます。
返事遅くなってすみません。
もっとたくさんの意見を聞きたいので、もう少し待ってみようと思います。
他の乱数理論について何か知っていたら、お願いします。
みつけたみつけた(*^_^*)
Delphiのものですけど、
http://www.nifty.ne.jp/forum/fdelphi/samples/01200.html
最新乱数アルゴリズムで、乱数を生成するユニット(モジュール)です。
Delphiのものも、この程度なら、あとJavaScriptを見たことがあれば、
そんなに難しいものではないと思いますけど…。
・Delphiでは"(*〜*)","{〜}",などがコメント(つまり前半ほとんどコメント)になります。
・shlなどのビットずらし演算子はVBにはありませんけど、乗算やorなどでどうにかできると思います。サンプルもあるようですし。
それから、"理論"というのはちょっと正しくなかったですね^^;
正確には"アルゴリズム”(どっちもたいしてかわらない?)です。
たかみちえさんありがとうございます。
またまた返事遅くなってすみません^^;
このサンプルや前回教えて頂いたやり方で、いろいろ試してみようと
思います。
ありがとうございました。