ページ 1 / 1
確率の偏らせ方
Posted: 2010年2月19日(金) 18:00
by KA
乱数を使って現れる座標を変えるというプログラムを作っています。
現れる座標には幅があって、その幅の中から必ず現れます。
ここまで出来たのですが、その座標に偏りを持たせたいのですがうまくいきません。(上>下・上>真ん中)
どうすれば偏りを持たせることが出来るでしょうか。よろしくお願いします。(C++・標準rand関数)
Re:確率の偏らせ方
Posted: 2010年2月19日(金) 18:24
by 紅葉
あらかじめ多めにとって修正するのはどうでしょうか?
ソースは確認していないので動くかわかりません。
0~100の値を取得したい場合
(80~100を多めに出す)
int r = rand()%120;
if(r > 100) r = r - 20;
こんな感じにすれば偏り?が出せるかもしれません。
Re:確率の偏らせ方
Posted: 2010年2月19日(金) 19:01
by KA
結構偏りが出ました。
これでやってみたいと思います。ありがとうございました。
Re:確率の偏らせ方
Posted: 2010年2月19日(金) 19:32
by KA
すいません。
解決を付けてしまいましたが、やっぱりわからないことが出てきました。
例では80~100を多く出していましたが、これを例えば10~20を多くするにはどうすればよいでしょうか?
Re:確率の偏らせ方
Posted: 2010年2月19日(金) 19:42
by えーや
>10~20を多く出したい
上記では 余分な20(101~120)の時に80~100になるように設定していますが、
10~20なら
int r = rand()%120;
if(r > 100) r = r - 90;
にすればよいと思われます。
訂正:
10~20でしたね。上記の例だと10~30ですね。
if(r > 100) r = (r - 100)/2 + 10
とかでよいのではないでしょうか。ほかにもありそうですが...

Re:確率の偏らせ方
Posted: 2010年2月19日(金) 20:29
by KA
参考にして、区間・開始を操作することが出来るようになりました。
本当にありがとうございました。