rand関数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
馬鹿太郎

rand関数

#1

投稿記事 by 馬鹿太郎 » 16年前

rand関数を使って以下のことをします。

・ans = rand() % 11
 0以上10以下の乱数を生成する

・ans = 1 + rand() % 999
 1~999の乱数を生成する

たとえば0以上10以下の乱数を生成するとき、ans = rand() % 11の式を使いますよね。
テキストに書いてあったので理解できましたが、0以上10以下の乱数を生成するのを
作るときは、どのように考えたらいいのでしょうか?

よろしければ、アドバイスをお願いします。

たいちう

Re:rand関数

#2

投稿記事 by たいちう » 16年前

> たとえば0以上10以下の乱数を生成するとき、ans = rand() % 11の式を使いますよね。
> テキストに書いてあったので理解できましたが、0以上10以下の乱数を生成するのを
> 作るときは、どのように考えたらいいのでしょうか?

書き間違いですか?
理解できたけど考え方がわからない?

SCI

Re:rand関数

#3

投稿記事 by SCI » 16年前

剰余演算子の仕組みというか、なぜその式になるのか、ということですか?

御津凪

Re:rand関数

#4

投稿記事 by 御津凪 » 16年前

> 0以上10以下の乱数を生成するのを作るとき

読み方によっては rand 関数のような乱数を生成する関数を作るには?
とも読めます。

コスモ

Re:rand関数

#5

投稿記事 by コスモ » 16年前

>0以上10以下の乱数を生成するのを作るときは、どのように考えたらいいのでしょうか?

つまりrand関数が何をしているか分からないということですか?
それとも%演算子の意味が分からないのですか?

BEMANI

Re:rand関数

#6

投稿記事 by BEMANI » 16年前

多分自作rand関数を作りたいのだと思います。
自分はそういう風にとらえられました。

lbfuvab

Re:rand関数

#7

投稿記事 by lbfuvab » 16年前

仮に自作の乱数発生器が作りたいなら、「線形合同法」や「Ranrot」や「Mother-of-All」で調べると良いですよ。

夢の旅人

Re:rand関数

#8

投稿記事 by 夢の旅人 » 16年前

多分、式そのもののことじゃないでしょうか?

%演算子は、”前後の値を割り算した時の余りを求めるもの”ですよね。
例> 10%3=1 (10÷3=3 余り 1)
”余り” というのは、割る数より大きくなることはありませんから、
  rand() % 11
の場合は、出てくる値が
0(割り切れる)~10
という範囲に限定されます。
なので、rand() でどんな値が生成されても、かならず0以上10以下の乱数が生成されます。

質問の意図を取り違えていたらごめんなさい。

conio

Re:rand関数

#9

投稿記事 by conio » 16年前

『テキストに「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関数

#10

投稿記事 by 通りすがり » 16年前

質問者の文章が意味わからず、補足もしないのに、みんな親切すぎw

馬鹿太郎

Re:rand関数

#11

投稿記事 by 馬鹿太郎 » 16年前

すいません、皆様。
無事、解決致しました。

閉鎖

“C言語何でも質問掲示板” へ戻る