4

11 から 99 までの数のランダム関数が必要です。私はこれを書きました:

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

しかし、その数は 99 を超えています。なぜでしょうか。

4

3 に答える 3

11

なぜなら、rand()return98の場合98 % 9998and98 + 11 > 99です。

これを行うには、必要です

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

rand() % 89数字を出しますので[0, 88]、そう+11なるでしょう[11, 99]


そうしないとsrand( time( NULL ) )、(おそらく) 同じシーケンスの (疑似) 乱数が常に生成されます。

于 2012-08-27T13:39:28.653 に答える
2

( value % 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()%990 から 98 までの値を返すため。次に、11 を追加して、範囲が 11 から 109 になるようにします。99 を 89 に変更する必要があります。

于 2012-08-27T13:41:42.127 に答える