プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/10 12:30

1234と4321は


重複すると見なすのでしょうか
重複しないと見なすのでしょうか
また、
同じ数字を重複して使うのでしょうか
使わないのでしょうか
例えば1111を許す、許さない
    • good
    • 0

ランダム関数は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を選択結果として保存
    • good
    • 0

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