C随机数发生器

C随机数发生器,c,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

我已经编写了以下代码来生成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;
}
intmain(intargc,char*argv[])
{
unsigned int iseed=(unsigned int)时间(NULL);
srand(iseed);
/*生成随机数*/
int i;
对于(i=0;i<1;i++)
{
printf(“随机[%d]=%u\n”,i,rand());
}
返回0;
}
输出给我一个10位数的随机数,如何更改输出中打印的位数

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的倍数范围内,我们需要重新滚动,以避免对高结果产生偏见。

您试图解决的问题是什么?您是在问如何使rand返回更大的数字,如何使printf语句显示更多/更少的数字?此外,在许多系统上,RAND_MAX通常为32767。因此,根据编译位置的不同,您的代码最多只能是5位数字。对于
无符号int
,您的代码将
int
关闭。一个好的编译器应该警告您这一点;确保您正确设置了构建环境.StackOverflow通常不喜欢没有经过最高警告级别测试的问题。因此,您的问题与
rand()
无关?请更加努力地制定您的问题。您是否查阅了平台的
printf
文档?上面说了什么?