• ベストアンサー

重複しない組み合わせのプログラム

0から9のうち4つの数字を取り出すというC言語のプログラムをつくりたいのですが、ランダム関数を用いると重複してしまいます。どのようにしたらよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

取り出した数字を配列にでも保存しておいて、取り出すたびにそれと比較して、重複があったら取り出しをやり直す、ではダメですか?

KSM
質問者

お礼

ありがとうございます。なんとか作成できました

その他の回答 (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を選択結果として保存

関連するQ&A