ページ 1 / 1
rand関数
Posted: 2009年2月25日(水) 22:17
by 馬鹿太郎
rand関数を使って以下のことをします。
・ans = rand() % 11
0以上10以下の乱数を生成する
・ans = 1 + rand() % 999
1~999の乱数を生成する
たとえば0以上10以下の乱数を生成するとき、ans = rand() % 11の式を使いますよね。
テキストに書いてあったので理解できましたが、0以上10以下の乱数を生成するのを
作るときは、どのように考えたらいいのでしょうか?
よろしければ、アドバイスをお願いします。
Re:rand関数
Posted: 2009年2月25日(水) 22:27
by たいちう
> たとえば0以上10以下の乱数を生成するとき、ans = rand() % 11の式を使いますよね。
> テキストに書いてあったので理解できましたが、0以上10以下の乱数を生成するのを
> 作るときは、どのように考えたらいいのでしょうか?
書き間違いですか?
理解できたけど考え方がわからない?
Re:rand関数
Posted: 2009年2月25日(水) 22:58
by SCI
剰余演算子の仕組みというか、なぜその式になるのか、ということですか?
Re:rand関数
Posted: 2009年2月25日(水) 23:05
by 御津凪
> 0以上10以下の乱数を生成するのを作るとき
読み方によっては rand 関数のような乱数を生成する関数を作るには?
とも読めます。
Re:rand関数
Posted: 2009年2月25日(水) 23:18
by コスモ
>0以上10以下の乱数を生成するのを作るときは、どのように考えたらいいのでしょうか?
つまりrand関数が何をしているか分からないということですか?
それとも%演算子の意味が分からないのですか?
Re:rand関数
Posted: 2009年2月26日(木) 01:50
by BEMANI
多分自作rand関数を作りたいのだと思います。
自分はそういう風にとらえられました。
Re:rand関数
Posted: 2009年2月26日(木) 02:22
by lbfuvab
仮に自作の乱数発生器が作りたいなら、「線形合同法」や「Ranrot」や「Mother-of-All」で調べると良いですよ。
Re:rand関数
Posted: 2009年2月28日(土) 13:28
by 夢の旅人
多分、式そのもののことじゃないでしょうか?
%演算子は、”前後の値を割り算した時の余りを求めるもの”ですよね。
例> 10%3=1 (10÷3=3 余り 1)
”余り” というのは、割る数より大きくなることはありませんから、
rand() % 11
の場合は、出てくる値が
0(割り切れる)~10
という範囲に限定されます。
なので、rand() でどんな値が生成されても、かならず0以上10以下の乱数が生成されます。
質問の意図を取り違えていたらごめんなさい。
Re:rand関数
Posted: 2009年2月28日(土) 19:42
by conio
『テキストに「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関数の式になったと考えれば良いのではないかと。
Re:rand関数
Posted: 2009年3月01日(日) 01:23
by 通りすがり
質問者の文章が意味わからず、補足もしないのに、みんな親切すぎw
Re:rand関数
Posted: 2009年3月01日(日) 02:09
by 馬鹿太郎
すいません、皆様。
無事、解決致しました。