4

我需要一个 11 到 99 之间数字的随机函数。我写了这个:

int random (void){
    int i2;
    i2=11+(rand()%99);      
    return i2;
}

但数字超过 99。为什么?

4

3 回答 3

11

因为如果rand()返回98,那么98 % 99就是9898 + 11 > 99

为此,您需要

i2 = 11 + ( rand() % 89 );

rand() % 89会给你数字[0, 88],所以+11会变成[11, 99]


顺便说一句,不要忘记srand( time( NULL ) ),否则它(很可能)会一直生成相同的(伪)随机数序列。

于 2012-08-27T13:39:28.653 回答
2

(值 % 100 )在 0 到 99 的范围内。您添加 11,因此范围在 11 到 110 之间。

尝试这样的事情:

int random (int min,int max){
    return min+(rand()%(max-min));
}

参数 min 和 max 表示数字的范围

于 2012-08-27T13:42:34.077 回答
1

因为rand()%99返回一个 0 到 98 之间的值;然后添加 11,因此范围是 11 到 109。您必须将 99 更改为 89

于 2012-08-27T13:41:42.127 回答