C言語関係掲示板

過去ログ

No.917 [Y〜X]の乱数を得る

[戻る] [ホームページ]
No.11629

rand関数。
投稿者---ZYO(2004/01/10 21:13:49)


rand関数で、
x = 1+(n*rand() / (RAND_MAX+1.0));
ですと、1〜n の乱数を発生させることが出来ますが、
初期値も自分で決めることの出来る計算式は何か無いでしょうか?
( x〜n[45〜58 ete,,,] の乱数発生。)

No.11630

Re:rand関数。
投稿者---あかま(2004/01/10 21:22:05)


>( x〜n[45〜58 ete,,,] の乱数発生。)
x = 1+((n-45)*rand() / (RAND_MAX+1.0))+45;


No.11635

Re:rand関数。
投稿者---ZYO(2004/01/10 21:59:12)


>>( x〜n[45〜58 ete,,,] の乱数発生。)
>x = 1+((n-45)*rand() / (RAND_MAX+1.0))+45;

それですと、 46〜n の乱数をえてしまいませんか?

No.11636

Re:rand関数。
投稿者---あかま(2004/01/10 22:10:26)


>それですと、 46〜n の乱数をえてしまいませんか?
x = ((n-44)*rand() / (RAND_MAX+1.0))+45;
か?

No.11638

Re:rand関数。
投稿者---ZYO(2004/01/10 23:01:56)


>x = ((n-44)*rand() / (RAND_MAX+1.0))+45;
>か?

そうですね♪
私も、今まで考えたやっと分かりました(;^_^A
あかまさんありがとうございました。

まとめ。
[Y〜X]の乱数を得る。
x = ((X-(Y-1))*rand() / (RAND_MAX+1.0))+Y;

No.11646

Re:rand関数。
投稿者---RAPT(2004/01/11 00:49:55)


int randperiod(int begin, int end){
  return begin + rand() * (end - begin + 1) / RAND_MAX;
}