• ベストアンサー

ランダムって何ですか?

ランダムって何ですか? 人間がランダムにするなら サイコロをふったり、袋の中から数字を取り出します。 でもコンピュータはどうやってランダムに 数字を選ぶのですか? 詳しい人教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

コンピュータの中で乱数を取得するには、「擬似」乱数という乱数「みたいな」数を使用します。 これは、色々なアルゴリズムがあるのですが関数を使用して乱数風の数を出力させることで取得します。 擬似なので、本当の意味での乱数では無いのですが、コンピュータ上で使用するには問題ない程度にランダムな数字が返ってきます。 ただし、通常の擬似乱数はあくまでも関数の戻り値として取得するので、初期値のままで何もしなければ常に同じ乱数(同じ順番の数)を返します。(内部的に処理をしているのものを除く。)なので、乱数を発生させる関数に別の値(例えば、今の時間とかコンピュータの内部時計の時間等)を与えることによって色々な乱数を取り出しています。 「擬似乱数」で検索すると色々なアルゴリズムが出てきますよ。

d_kaji
質問者

お礼

つまりコンピュータのランダムとは、 ランダムに見せた計算(疑似乱数)なのですね。 総括的なお答えだったのでベストにさせていたただきました。 回答いただきありがとうございました!

その他の回答 (2)

  • debukuro
  • ベストアンサー率19% (3634/18947)
回答No.3

簡単な方法はメインメモリーの内容が勝手に消えないようにするためのリフレッシュメモリーの値を取り出すのです メインメモリーのどこを読み出しているかはユーザーには分からないので乱数と見なせます 本当の乱数ではないので同じ間隔で連続して取り出すと周期性が出てきます

d_kaji
質問者

お礼

リフレッシュメモリーの値でつくる方法もあるのですね。 回答ありがとうございました!

  • number44
  • ベストアンサー率27% (20/72)
回答No.1

いろいろとやり方はありますが、基本的には計算で求めます たとえば、「関数y=F(x)のxに何か数字を入れて、yの一の位を出力する」といったカタチで求めます。 「F(x)=3.3x+2の一の位とする」 と取り決めて、 今、10時20分35秒だとして、x=102035とします すると、 F(x=102035) = 3.3*102035+2 = 336717.5 よって、ランダムの数は「7」のような形で出力します。 実行するときの時間(xの値)が変わることで様々な数字が出力されるようになります。 これをランダムとして選びます。 ほかにも色々とやり方はありますが、基本的には計算で求めています。

d_kaji
質問者

お礼

時間の値によって計算する方法があるのですね。 回答ありがとうございます!

関連するQ&A