0

私はどこでもこのトピックを調べました。私の状態に関するトピックは見つかりませんでした。-100から100までの乱数で配列[10]を生成したい.これは私のコードです

int main (){
int a[10];
int i;

for (i=0;i<10;i++)
{
    a[i]= rand() % 201 -100;
    printf ("%d\n",a[i]);
    }


    system ("pause");
    return 0;
}

プログラムを実行するたびに出力は同じです..私の質問は、これらの乱数配列をシャッフルする方法ですか? 私の悪い英語でごめんなさい

4

4 に答える 4

4

シャッフルする必要はありません。乱数発生器をシードする方が簡単です。

C では、これは通常、次srand()のように現在の時刻で呼び出すことによって行われます。

srand(time(NULL));

乱数発生器と時刻の間には論理的な関係がないことに注意してください。これは、プログラムを実行するたびに異なる可能性が高い数値を取得するための便利な方法です。便利なソースがあれば、別のソースからジェネレーターをシードすることもできます。

また、乱数の配列には重複が含まれる可能性があることに注意してください。コードを追加してそれらを除外する場合は、迷惑になる可能性があります。

于 2013-05-08T09:33:14.380 に答える
3

別の値を生成するには、ランダム シードを現在の時刻 (呼び出し時刻) を表す値に初期化する必要があります。

/* initialize random seed: */
  srand (time(NULL));
于 2013-05-08T09:33:07.093 に答える
0

これを見る

それが役に立てば幸い

それ以外の場合は、ランドに現在の時刻をシードしてみてください。

于 2013-05-08T09:34:12.083 に答える