参考:[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で割るんだろう。