- 締切済み
pascalにおける乱数の組み込み方
学校の課題で「1≦x≦n、1≦y≦nの範囲の点(x,y)をランダム個数選び、(0,0)から見える点の個数を数えよ」という課題が出ました。 nは自由に設定し、入力する毎に選択する個数をランダムで決めxとyもその個数分選び、それらの中でGCD(x、y)=1となる点の個数を数える問題です。 参考としてランダムを表すプログラム program seed_example(output); var i,x:integer; begin x := seed(wallclock); writeln('乱数の作成:'); for i := 1 to 10 do begin writeln(random(0)); end; end. が与えられました。(上式のxは問題のxと無関係) 今回の問題では、選ぶ個数を「h」とすると 『h := seed(wallclock);(以下略)』と設定しランダム化させxとyは 『for x(or y) := 1 to h do(以下略)』としてh個選ぶ。 このような考え方で合っているのでしょうか? 回答お待ちしております。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- rabbit_cat
- ベストアンサー率40% (829/2062)
h := seed(wallclock); はおかしいです。これは、乱数の種を現在時刻で設定すると同時に、前回の乱数の種がhに返ります。 seedは乱数の種を設定するためのもので、実際に乱数を得るためのものではありません。 正しくは、 x := seed(wallclock); とかして乱数の種を設定したあと、 h := random(0); でランダムに個数を決めて、 さらに、 『for x(or y) := 1 to h do(以下略)』としてh個の点をランダムに選ぶ にしないといけません。
お礼
ありがとうございます。乱数の種は適当に決められて、それをランダム化したい値に代入する必要があったのですね。