0;}code乱数が重複しないようにするにはどうすれば良いですか?トランプのカードの種類も出さなくてはいけません。乱数が重複するのは、使う乱数を決めるための関数srand((unsigned)time(NULL));をcard関数内で何度も呼び出しているのが原因です。main関数内で一度だけ呼び出すようにしてみましょう。ただの超絶右留斗羅天才プログラマーです。6年前main関数内にしましたが重複してしまいます。6年前srand((unsigned)time(NULL));をwhile文の中でやっていませんか?C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。C++を使えばそのような間違いを犯しにくくなる。やってしまったときには足全体が無くなる。6年前やっていません。́▽`*)どうしても分からなくなったら、スポイラーを開いて確認してみましょう。]ただの超絶右留斗羅天才プログラマーです。最初のアドバイスでそれをやってみましたが、重複したので改めて質問させて頂いたのですが・・・。6年前おそらくZ400FXさんが実現したいのはランダムな順列ですよね。良い解説を見つけました。6年前もし、連続して同じカードを引きたくないのであれば前の値を保持しておき同じであるならば生成しなおす方法をお勧めしますが、すべて重複したくないのであるならば配列をシャッフルしてしまうのがいいと思います。C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。C++を使えばそのような間違いを犯しにくくなる。やってしまったときには足全体が無くなる。6年前1度引いたカードはその実行中には2度と出てこないようにしたいのです。6年前それでしたら配列の中身をランダムにシャッフルして取得するたびに配列の添え字をインクリメントするのが簡単でしょう。配列の大きさ以上に取得使用としたときの対応が必要になりますが。C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。C++を使えばそのような間違いを犯しにくくなる。やってしまったときには足全体が無くなる。1度引いたカードはその実行中には2度と出てこないようにしたいのです。それを実現するのがランダムな順列です。先程は失礼致しました。以下を全て直すと実現できます。1scanfの内容をscanf("%s",&c);に直しておきます。2card関数の戻り値をchar型とします。3funyuの変数をchar型とします。int型の変数を一つ用意し、初期値を13とします。5card関数のtestをchar型にし、"1"とくくっていたものを'1'と全て直します。7戻り値を保持するchar型変数にtest[num]を保持します。8一度選んだものを潰すために、for文を回します。9maxの値を一つ引きます。10保持しておいたものをreturnします。1113回以上引くとエラーが起きるので、13回以降は'\0'をreturnします。コードは以下のようになります。0;}ただの超絶右留斗羅天才プログラマーです。自分が昔書いたライブラリ(をC言語に移植したもの)を貼っておきます。UNIQUERAND_MAXを自分が使いたい乱数の最大値+1に設定する。UniqueRand_init()関数を呼び出して初期化する。UniqueRand_nextInt()関数で次の乱数が取得できる。num)関数である数を出たことにできる。num)関数である数を出ていないことにできる。移植元のC++のコードはここにあります。6年前シングルクォーテーションでくくると、何故か文字化けしてしまうのですよね(ノ_・;)5と11に該当する部分ですので、元のプログラムを元に変更してください。他に文字化けしている所も、元のプログラムを参照してください。ただの超絶右留斗羅天才プログラマーです。