【发布时间】:2013-11-21 03:00:15
【问题描述】:
如何生成 0 到 1000000 之间的随机数?
我已经尝试过下面的代码,但它仍然给我从 0 到 32767 (RAND_MAX) 的数字:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i,x;
srand(time(NULL));
for(i=0; i<10000; i++){
int x = rand() % 10000000 + 1;
printf("%d\n",x);
}
return 0;
}
【问题讨论】:
-
运行上限/RAND_MAX 次并将它们相加?
-
RAND_MAX 通常小于 1000000 是不是像 16000 一样
-
签出this
-
@Montaldo 将它们加起来不会均匀分布。仅两个制服的总和具有三角形分布。如果您添加的数量超过少数,则总和很快就会达到正态分布。添加 10M/32K = 305 件制服后,95% 的结果将在 5,000,000 +/- 330,000 范围内。