我编写了以下代码以在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位数的随机数,如何更改输出中打印的位数?
答案 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
的倍数范围内的情况下重新滚动避免偏见高结果。