C随机数发生器

时间:2012-09-13 06:07:12

标签: c

我编写了以下代码以在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位数的随机数,如何更改输出中打印的位数?

1 个答案:

答案 0 :(得分: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的倍数范围内的情况下重新滚动避免偏见高结果。