我正在使用random()函数,我想知道是否有什么原因使我总是得到8-10位数字。我只想确定我的程序没有什么问题。谢谢。
下面是函数:
void random_array(int* p, int size) {
/*seed random number generator */
srandom(time(NULL));
int i;
for(i = 0; i < size; i++)
*(p+i) = random();
}
发布于 2014-02-22 07:09:41
嗯,从数学上讲,你得到一个大数字的机会比得到一个(相对)小数字的机会大得多。例如,如果您选择一个具有(1-4)位数字的随机数,则它在(0-99)范围内的可能性仅为1%。
也就是说,如果你想要更小的数字,你可以取随机模某个确定的数字:
a = random() % 100; // this will give you a random number from 0 to 99
b = 10 + random() % 15; // random number from 10 to 24
发布于 2014-02-22 07:11:37
8-10位数: 10,000,000,000 - 100,000,000 =9,900,000(99亿)
0-7位数字个数:1000万(1000万)
换句话说,每10-7位数字对应990个8-10位数字。因此,对于每990个8-10位数字,您可以期望得到大约1 0-7位数字。
简而言之,这是因为它们的数量更多。
发布于 2014-02-22 07:11:46
您希望从random()
收到多大的数字
如果您想限制生成的数字的大小,只需使用模运算符将结果限制为余数(在下面的示例中为0到999之间的数字):
*(p+i) = random() % 1000;
https://stackoverflow.com/questions/21946969
复制相似问题