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()
return98
の場合98 % 99
は98
and98 + 11 > 99
です。
これを行うには、必要です
i2 = 11 + ( rand() % 89 );
rand() % 89
数字を出しますので[0, 88]
、そう+11
なるでしょう[11, 99]
。
そうしないとsrand( time( NULL ) )
、(おそらく) 同じシーケンスの (疑似) 乱数が常に生成されます。
( value % 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 に変更する必要があります。