-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,这可能是一个很大的数字。

如果要在 range 中获得均匀的样本,则[0, N)需要将 range 划分为多个区域:

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 回答