rand関数を使って以下のことをします。
・ans = rand() % 11
0以上10以下の乱数を生成する
・ans = 1 + rand() % 999
1~999の乱数を生成する
たとえば0以上10以下の乱数を生成するとき、ans = rand() % 11の式を使いますよね。
テキストに書いてあったので理解できましたが、0以上10以下の乱数を生成するのを
作るときは、どのように考えたらいいのでしょうか?
よろしければ、アドバイスをお願いします。
rand関数
Re:rand関数
『テキストに「ans = rand() % 11」と書いてあったので、1~10の変数を生成できたのですが、
何故「ans = rand() % 11」という式になるのか分かりません』
という事でしょうか?
そういう意味だと仮定して話を進めてみます。
とりあえず①、②が分かれば問題ないかと。
--------------------------------------------
①rand関数は0~RAND_MAXまでの値を返す。
②"%"は余りを求める演算子。
--------------------------------------------
【具体例】
ans = rand() % 5 ・・・0~4まで
ans = rand() % 10 ・・・0~9まで
ans = rand() % 100 ・・・0~99まで
この場合、最小値は0、最大値は%の右側にある数字より1小さい値になります。
何故そうなるかは、お金で例えると多少分かりやすくなるかも?
例えば、ある金額を全部10円玉に換えようとする場合、絶対に10円以上の余りは出ません。0~9円まで。
(残額が10円以上あるときは、当然10円玉に交換できますから)
97円 % 10円玉 = 7円
42円 % 10円玉 = 2円
10円 % 10円玉 = 0円
11円 % 10円玉 = 1円
88円 % 10円玉 = 8円
これが、上のrand関数の式になったと考えれば良いのではないかと。
何故「ans = rand() % 11」という式になるのか分かりません』
という事でしょうか?
そういう意味だと仮定して話を進めてみます。
とりあえず①、②が分かれば問題ないかと。
--------------------------------------------
①rand関数は0~RAND_MAXまでの値を返す。
②"%"は余りを求める演算子。
--------------------------------------------
【具体例】
ans = rand() % 5 ・・・0~4まで
ans = rand() % 10 ・・・0~9まで
ans = rand() % 100 ・・・0~99まで
この場合、最小値は0、最大値は%の右側にある数字より1小さい値になります。
何故そうなるかは、お金で例えると多少分かりやすくなるかも?
例えば、ある金額を全部10円玉に換えようとする場合、絶対に10円以上の余りは出ません。0~9円まで。
(残額が10円以上あるときは、当然10円玉に交換できますから)
97円 % 10円玉 = 7円
42円 % 10円玉 = 2円
10円 % 10円玉 = 0円
11円 % 10円玉 = 1円
88円 % 10円玉 = 8円
これが、上のrand関数の式になったと考えれば良いのではないかと。