【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21102

2つ以上の乱数を使用するとき
投稿者---綾菜(2005/05/19 23:08:26)


はじめまして。

乱数についての質問なのですが、2つ以上の乱数を使用する場合、
全て別々の数字になるように表示するにはどのようにすればよいのでしょうか?

言葉の説明ばかりではわかりにくいと思いますので、例えば以下の場合
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main(){
int a,b;

srand(time(NULL));
a=rand()%100+1;

srand(time(NULL));
b=rand()%100+1;

printf("1つ目→%d\n",a);
printf("2つ目→%d\n",b);
}

だと、1つ目の数字も、2つ目の数字も同じになっちゃいますよね。
この数字を、1つ目は○○、2つ目は△△
というように、別々の数字になるようにしたいのですが
私の知識が及ばないばかりになかなか思いつかないのです。

ですので、もしよければアドバイスをいただければ嬉しく思います。
よろしくお願い致します。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:2つ以上の乱数を使用するとき 21103 まきじ 2005/05/19 23:14:21
<子記事> Re:2つ以上の乱数を使用するとき 21105 まきじ 2005/05/19 23:18:06


No.21103

Re:2つ以上の乱数を使用するとき
投稿者---まきじ(2005/05/19 23:14:21)


>だと、1つ目の数字も、2つ目の数字も同じになっちゃいますよね。

srand(time(NULL)) は一回で良いです。

同じ数値を避けたいなら、a と b が同じ値の間、
b を更新し続けたら違う値にできます。


この投稿にコメントする

削除パスワード

No.21105

Re:2つ以上の乱数を使用するとき
投稿者---まきじ(2005/05/19 23:18:06)


あと、srand の引数は unsined int なので
srand((unsigned int)time(NULL)) とした方が良いです。


この投稿にコメントする

削除パスワード

No.21106

解決しました
投稿者---綾菜(2005/05/19 23:34:35)


まきじ様、返信ありがとうございます!

>srand(time(NULL)) は一回で良いです。
そうだったのですね、これで誤解がとけました。

以下の様に書き直してみたところ、問題なく実行できました。

void main()
{
int a,b;

srand((unsigned int)time(NULL));
a=rand()%100+1;
b=rand()%100+1;

printf("1つ目→%d\n",a);
printf("2つ目→%d\n",b);
}

とりあえず今はaとbはランダムという形なので、
もし全てを同じ値を避けたいときはアドバイスしていただいたとおり、
bを更新し続けるという形でやってみたいと思います。

ほんとうにありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧