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