プロが教えるわが家の防犯対策術!

プログラム超初心者です
C言語についてです。
サイコロを振る関数を作り、その関数を二回呼び出し丁半判定をする
プログラムが作りたいのですが、毎回二回振ったサイコロの値が同じになってしまいます。
おそらくsaikoro関数の戻り値がsで固定されていることが原因かと思うのですが、解決策がわかりません。以下自作のプログラムです。



int main(){
chohan();
return(0);
}

int saikoro(){
srand( (unsigned int)time(NULL) );
rand();

int s;
s=rand()%6+1;

return(s);


}

void chohan(){
int a,b;
a=saikoro();
b=saikoro();

printf("%d\n%d",a,b);
}

質問者からの補足コメント

  • よろしければどなたか教えてください。お願いします。

      補足日時:2021/02/23 13:14

A 回答 (1件)

>おそらくsaikoro関数の戻り値がsで固定されていることが原因かと思うのですが



関係ありません。
『同じ乱数の種』から同じ乱数が生成されただけです。
saikoro()は1秒以上間隔を開けてから呼びましょう。

さもなければ、srand()はプログラム起動時に1回だけ呼びましょう。(ふつうはこっちの対応します)
    • good
    • 0
この回答へのお礼

一瞬で解決しました・・・
ありがとうございます!
srandの意味も理解できました!

お礼日時:2021/02/23 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!