C随机数发生器
我已经编写了以下代码来生成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
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
文档?上面说了什么?