-2

Cで乱数を生成する次のコードを作成しました。

int main (int argc, char *argv[])
{
    unsigned int iseed = (unsigned int)time(NULL);
    srand (iseed);

    /* Generate random number*/
    int i;
    for (i = 0; i < 1; i++)
    {
        printf ("Random[%d]= %u\n", i, rand ());
    }
    return 0;
}

出力には 10 桁の乱数が表示されます。出力に表示される桁数を変更するにはどうすればよいですか?

4

1 に答える 1

3

rand()は 0 から までの数値を返しますがRAND_MAX、これは大きな数値になる場合があります。

範囲内で均一なサンプルを取得する場合は[0, N)、範囲を領域に分割する必要があります。

int my_max = (RAND_MAX / N) * N;

int result;

while ((result = rand()) >= my_max) { } // #1

return result % N;

オンラインの条件が満たされることはめったにありませんが、高い結果に対する偏りを避けるため#1に、結果が の倍数である範囲内にない場合は、再ロールする必要があります。N

于 2012-09-13T06:13:09.550 に答える