2

私は C にやや慣れていませんが、さまざまな言語で同じ問題を抱えています。srand(time(NULL)) を使用して乱数を生成すると、値は最初は問題なく出力されますが、その後は常に同じ値が保持されます。上記のすべての変数を新しい値にリセットしようとしましたが、効果はありませんでした。

    while(Ui <= (uInput - 1))
    {

        printf("Input answer %d: ", (Ui + 1));
        scanf("%d", &answers[Ui]);

        Ui++;


        srand(time(NULL));
        a = (rand() % 25 + 1) - (rand() % 25 + 1);
        b = (rand() % 25 + 1) - (rand() % 25 + 1);
        c = (rand() % 25 + 1) - (rand() % 25 + 1);
        d = (rand() % 25 + 1) - (rand() % 25 + 1);
        e = (rand() % 25 + 1) - (rand() % 25 + 1);
        f = (rand() % 25 + 1) - (rand() % 25 + 1);
        g = (rand() % 25 + 1) - (rand() % 25 + 1);
        h = (rand() % 25 + 1) - (rand() % 25 + 1);
        i = (rand() % 25 + 1) - (rand() % 25 + 1);
        j = (rand() % 25 + 1) - (rand() % 25 + 1);

   }

アイデアは、これが複数の 10 変数方程式を出力することであり、変数 aj は方程式内の各変数の係数を表します。問題は、私が何をしても、毎回同じ方程式を生成して出力し、新しいランダム値を変数に再割り当てしないことです。

補足として、私のコードは今のところ何も実行していないように見えますが、これはランダムな値を割り当てる方法を確認できるように、コピー、貼り付け、および変更した単なるスニペットです。

ヘルプ、フィードバック、またはサポートに感謝します。

4

1 に答える 1

6

ループのsrand(time(NULL));外側に移動します。while

time(NULL)(prototype: )time_tに変換される構造体を返し、エポック: 協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの合計秒数を格納します。unsigned intvoid srand( unsigned seed );

また、ループは高速で実行されるため、それぞれsrand(time(NULL))が同じ秒で評価されます。

于 2013-10-17T19:38:33.187 に答える