- ベストアンサー
重複しない組み合わせのプログラム
0から9のうち4つの数字を取り出すというC言語のプログラムをつくりたいのですが、ランダム関数を用いると重複してしまいます。どのようにしたらよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
取り出した数字を配列にでも保存しておいて、取り出すたびにそれと比較して、重複があったら取り出しをやり直す、ではダメですか?
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.3
1234と4321は 重複すると見なすのでしょうか 重複しないと見なすのでしょうか また、 同じ数字を重複して使うのでしょうか 使わないのでしょうか 例えば1111を許す、許さない
- akipapa
- ベストアンサー率38% (34/89)
回答No.2
ランダム関数は0~9が出てくるのですね。 ランダム関数の呼び出し回数を4回にしたいのであれば、選択済みフラグを配列で用意しておいて、選択している数字なら次の数字を採用する、というのではどうでしょう。 処理開始でFLG[0]からFLG[9]までゼロを代入 下記処理を4回繰り返し i←ランダム関数の結果 FLG[i]=0ならiを選択結果として保存 FLG[i]←1 /* 選択済みにする */ FLG[i]=1なら 下記を選択する数字が決まるまで繰り返し i←i+1 i > 9 なら i←0 FLG[i]=0ならiを選択結果として保存
お礼
ありがとうございます。なんとか作成できました