我需要一个 11 到 99 之间数字的随机函数。我写了这个:
int random (void){
int i2;
i2=11+(rand()%99);
return i2;
}
但数字超过 99。为什么?
我需要一个 11 到 99 之间数字的随机函数。我写了这个:
int random (void){
int i2;
i2=11+(rand()%99);
return i2;
}
但数字超过 99。为什么?
因为如果rand()
返回98
,那么98 % 99
就是98
和98 + 11 > 99
。
为此,您需要
i2 = 11 + ( rand() % 89 );
rand() % 89
会给你数字[0, 88]
,所以+11
会变成[11, 99]
。
顺便说一句,不要忘记srand( time( NULL ) )
,否则它(很可能)会一直生成相同的(伪)随机数序列。
(值 % 100 )在 0 到 99 的范围内。您添加 11,因此范围在 11 到 110 之间。
尝试这样的事情:
int random (int min,int max){
return min+(rand()%(max-min));
}
参数 min 和 max 表示数字的范围
因为rand()%99
返回一个 0 到 98 之间的值;然后添加 11,因此范围是 11 到 109。您必须将 99 更改为 89