プログラミング的な

プログラミング的ななにかです

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

rand()メモ2 最小値から最大値までの乱数

参考:[3]乱数の範囲を限定する

int GetRandom(int min,int max)
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
最小値+(int)((0?RAND_MAXまでのランダム値)*(最大値-最小値+1)/(1+RAND_MAX))
これで最小値から最大値までのランダムが出せるらしい。

最小値:0 最大値;10
0+(int)(100*11/32768) = 0.0335693359375
0+(int)(10000*11/32768) = 3.35693359375
0+(int)(20000*11/32768) = 6.7138671875
(RAND_MAX : VC++、BC++、LSI C-86 では 32767)

ほう、ちゃんと出てそうだけど・・・
どうしてランダム値に最大値から最小値を引いたものをかけてそれをRAND_MAXで割るんだろう。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://proteki.blog66.fc2.com/tb.php/12-7c620b69
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。