C言語関係掲示板

過去ログ

No702 randが毎回同じ値を出す

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

srand(time(NULL))について
投稿者---tutida(2003/07/12 19:47:21)


 初めて投稿させていただきます。tutidaと申します。

 今、ミニロト組み合わせを作ってくれるプログラムを遊びで書いています。

「購入枚数」を入力させて、一枚につき5つのランダムに取出した数値を、入力

枚数分、ランダムで組み合わせを出力してくれるものです。

 そこで、一枚ごとに

srand(time(NULL)

 を用いて乱数を初期化してみたのですが、例えば、「10枚購入」と入力して

みると出力された「10枚分」の組み合わせがすべて同じになってしまいます。

 コードに間違いがあるのかもしれないと思ったりもしたのですが、その他に、

srand(time(NULL))のtime(NULL)のぶぶんが、処理の速さ(10枚くらいですか

ら一瞬です)で同じ数値を吐き出し、それによって毎回同じように初期化されて

しまうのではないかとの疑問をもち、printf("%f",time(NULL));でかくにんし

たところ、まいかい同じ数値が吐き出されていました。

 このように、毎回違う組み合わせを数組取りだしたいときには、srand()の引

数に何を指定すればよいのでしょうか?

ご教授よろしくお願いします。





No.8300

Re:srand(time(NULL))について
投稿者---nop(2003/07/12 19:52:25)


> そこで、一枚ごとに
>
>srand(time(NULL)

これは乱数の種を生成しているので、
一枚一枚実行せずに最初に1回実行すればいいよ。


No.8311

Re:srand(time(NULL))について
投稿者---ともじ(2003/07/12 23:22:15)


こんばんは。

> そこで、一枚ごとに
>
>srand(time(NULL)
>
> を用いて乱数を初期化してみたのですが、例えば、「10枚購入」と入力して
>
>みると出力された「10枚分」の組み合わせがすべて同じになってしまいます。

こちらの「注意」に説明があります。ご参照ください。
http://www9.plala.or.jp/sgwr-t/lib/srand.html

No.8318

Re:srand(time(NULL))について
投稿者---tutida(2003/07/13 15:40:48)


>こんばんは。
>
>こちらの「注意」に説明があります。ご参照ください。
>http://www9.plala.or.jp/sgwr-t/lib/srand.html

nopさん、ともじさん、レス有難う御座いました。

レッスンのところに注意書きあったのですね。失礼しました。

おかげで完成させることができました。

有難う御座いました。