スタッフブログ

STAFF BLOG

アプリ開発日誌

2021.07.15

コンピューターのランダムは本当にランダムだったの?

人類は、何千年もの間、乱数をなにげなく使用してきたので、その概念は決して新しいものではないです。 

古くは、古代バビロンの宝くじ、現代ではモンテカルロのルーレットテーブル、ラスベガスのサイコロゲームまで、

目標は最終結果を偶然に任せることです。

ランダムを生成するとき、真っ先に何を想像しますか?

僕なら当然、サイコロが頭に浮かんできます。

58bd2de48943a752a0f2adef-6-large

転がりにくいけど4面とか、もっともメジャーな6面、ゲームしか使わないけど20面とか・・・。

まぁ色んなタイプがありますよね。

サイコロ振って、結果、本人でも予測できない数字が出来ますよね。(基本的には…)

また、多くの人はコインを想像したかも。

コイントスして表か裏は予想できないですよね。

色んなスポーツで世界レベルの試合において使ってるコイントス・・・

Hand flipping a euro coin in slow motion

ギャンブルはさておき、ランダム性は科学、統計、暗号化などで多くの用途があります。 

サイコロ、コイン、または同様のメディアをランダムなデバイスとして使用することには限界があります。

なので、結局は複雑なランダム性を生み出すのに、コンピュータを使う事になります。 ?

では、プログラミングする時にコンピューターはどんな方法でランダムを発生させるのか?!


真の乱数

この方法は物理的プロセスに基づいており、ランダムであると予想される何らかの物理現象からランダム性の原因を収集します。

このような現象は、コンピューターの外部で発生します。 

これは、測定プロセスによって発生する可能性のあるバイアスについて測定および調整されます。 

例として、放射性崩壊、光電効果、宇宙背景放射、大気ノイズなどがあります。

そのようなランダム性に基づいて生成された乱数は、「真の乱数」であると言われます。

疑似乱数

「真の乱数」の代わりに、乱数を生成する2番目の方法には、明らかにランダムな結果を生成できる計算アルゴリズムを使います。

なぜ、ランダムにできるのか? 

得られる最終結果は、実際には、シード値とかはキーとも呼ばれる初期値によって完全に決定されるためです。 

したがって、キー値とアルゴリズムがどのように機能するかを知っていれば、

これら一見ランダムに見える結果を再現する事が可能になります。

だから「真の乱数」ではないですね。


コーディングの話にすると言語によってSyntaxが変わっていますが、

「Math.random()」とか「rand()」とか「numpy.random」は「疑似乱数」です。

真の乱数を発生してみたい方は ramdom.org のサイトを参考して読んでみてください。

ランダム性は大気ノイズに由来します。「真の乱数」になります。

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。