確率の偏らせ方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KA

確率の偏らせ方

#1

投稿記事 by KA » 15年前

乱数を使って現れる座標を変えるというプログラムを作っています。

現れる座標には幅があって、その幅の中から必ず現れます。

ここまで出来たのですが、その座標に偏りを持たせたいのですがうまくいきません。(上>下・上>真ん中)

どうすれば偏りを持たせることが出来るでしょうか。よろしくお願いします。(C++・標準rand関数)

紅葉

Re:確率の偏らせ方

#2

投稿記事 by 紅葉 » 15年前

あらかじめ多めにとって修正するのはどうでしょうか?
ソースは確認していないので動くかわかりません。

0~100の値を取得したい場合
(80~100を多めに出す)
int r = rand()%120;
if(r > 100) r = r - 20;
こんな感じにすれば偏り?が出せるかもしれません。

KA

Re:確率の偏らせ方

#3

投稿記事 by KA » 15年前

結構偏りが出ました。
これでやってみたいと思います。ありがとうございました。

KA

Re:確率の偏らせ方

#4

投稿記事 by KA » 15年前

すいません。
解決を付けてしまいましたが、やっぱりわからないことが出てきました。

例では80~100を多く出していましたが、これを例えば10~20を多くするにはどうすればよいでしょうか?

えーや

Re:確率の偏らせ方

#5

投稿記事 by えーや » 15年前

>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
とかでよいのではないでしょうか。ほかにもありそうですが... 画像

KA

Re:確率の偏らせ方

#6

投稿記事 by KA » 15年前

参考にして、区間・開始を操作することが出来るようになりました。
本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る