C中的随机函数

时间:2012-08-27 13:37:20

标签: c

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

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

但数字超过99.为什么?

3 个答案:

答案 0 :(得分:11)

因为如果rand()返回98,则98 % 999898 + 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