0

だから、私は私が書いている関数の一部としてモジュラスとランドを使用しています。今、私はそれを理解しています:

rand() % 6 + 1;この状況では、1から6の間の乱数が得られます。しかし、私もそれを知っています

rand();0〜32767のランダムな値を取得しsrand;、シーケンスを変更します

でも思った…

%=の余りが何でaあれa / b

...それで、あなたがrand() % 6 + 1;別れたとしたら、それはどのように見えるでしょうか?

私はこのように見えるので、私は自分の利益のためにこれを理解する必要がありますrand() % 6 + 1;

いくつかの乱数/6=ランダムから残った余り。次に、1つ追加します。

したがって、私の質問は2つあります。

rand()1-0から32767までの数値のスペクトルではなく、突然1から5に制限されるのはどうしてですか?

2-これらの数値(1〜5)を6で割ると、整数ではなく小数になります。モジュラスは整数でのみ機能すると思いました。ここで不足している情報は何ですか?

ご覧のとおり、私はこれについて混乱しています。ヘルプは常にありがたいです:)

4

1 に答える 1

0

rand()%66 で割ったときに生成される乱数を思い出させる

たとえばrand()、 が数値 100 を生成する場合、100%6 の結果は、100 を 6 で割ったときに得られるリマインダーであり、これは 4 です。したがって、関数 rand() から生成される数値が何であれ、%6 が実行されると、出力は 0 ~ 5 (6 で割ったときのリマインダー) の範囲内になります。

「rand() は、0 ~ 32767 の範囲の数値ではなく、突然 1 ~ 5 に制限されるのはなぜですか?」

rand() は「0-5」に制限されず、0 - 32767 (または最大制限がわからないもの) の数値を出力します。しかし、rand()%6 を実行すると、出力は 0 ~ 5 の範囲になります。

于 2013-02-18T05:59:36.820 に答える