ランダムジェネレータ:乱数を作成し、それについてのすべてを見つける!
ランダムジェネレータ:乱数を作成し、それについてのすべてを見つける!

ランダムジェネレータ:乱数を作成し、それについてのすべてを見つける!

アン ランダムジェネレーター とは、予測不可能で非決定論的な結果を生成するツールやアルゴリズムのことである。これらのジェネレーターは、暗号からコンピュータ・シミュレーションまで、多くの分野で不可欠である。

  • 予想できない結果: ランダム・ジェネレーターは、予測できない結果をもたらす。
  • 暗号に使用される: 安全な通信には欠かせない。
  • コンピューターシミュレーション: 複雑なシステムのモデリングや分析によく使用される。

乱数発生器


乱数ジェネレーター:乱数を作成し、それについてのすべてを見つける!- 2024年7月22日

乱数発生器の仕組み?

乱数生成器は、物理的プロセスまたは数学的アルゴリズムで動作する。最も重要なタイプは、真の乱数発生器(TRNG)と擬似乱数発生器(PRNG)である。

ブラックジャックをオンラインでプレイできる場所は?

私たちは、ブラック・ジャックで最高の経験をしてきました。 ライブカジノ 作られた。私の考えでは、そこが勝負どころだ、 ベストセレクション ライブディーラーのいるテーブルで、本場のカジノの練習ができます!他のオンラインカジノと比較して、プレイアモの賞金は本当に支払われます!

プレイアモカジノには、ブラックジャックのライブテーブルが多数あり 迅速な支払い 勝利.
今すぐボタンをクリックして、ボーナスを獲得してください!
プレイアモ・カジノのバナー

ランダム性のさまざまな応用により、ランダムなデータを生成するさまざまな方法が開発されてきた。サイコロを投げる、コインを投げる、トランプをシャッフルする、易経でヤローの茎を使う(占いのため)など、よく知られた例を含めれば、数え切れないほどの技法が古代から存在していた。これらの技法は機械的であるため、十分な乱数(統計学において重要)を大量に発生させるには、多くの労力と時間が必要であった。そのため、結果は乱数表として集められ、配布されることもあった。

最高のオンラインカジノを比較する

カジノロゴ

プレイアモカジノ テスト勝者

ウェルカムボーナス:最高€300まで100%

⭐⭐⭐⭐⭐
Playamoでプレーする
ナショナル・カジノのロゴ

ナショナル・カジノ

ウェルカムボーナス:100ユーロまでの100% + 100フリースピン

⭐⭐⭐⭐
ナショナルカジノでプレーする
20Betカジノのロゴ

20Betカジノ

ウェルカムボーナス:100% 最大€120

⭐⭐⭐⭐
20Betでプレーする

擬似乱数を生成するための計算方法はいくつかある。それらはすべて、程度の差こそあれ、統計的な乱数のいくつかを満たすものの、真のランダム性という目標を達成することはできない。 テスト ランダム性は、その結果がどの程度予測不可能か(つまり、パターンがどの程度認識可能か)を測定するように設計されている。そのため、暗号などのアプリケーションでは一般的に使用できない。しかし、以下の用途のために特別に設計された特別な機能を持つ、慎重に設計された暗号的に安全な擬似乱数生成器(CSPRNGS)も存在する。 インサート は暗号技術で開発された。

乱数ジェネレーター:乱数を作成し、それについてのすべてを見つける!- 2024年7月22日

ランダム生成器の応用

  1. ゲームとエンターテイメント:
    • ランダムジェネレーターは、サイコロの目、カードの引き、レベルの生成など、予測不可能な要素を作り出すためにゲームに使用される。
  2. 暗号技術:
    • 情報セキュリティにおいて、乱数生成器は暗号化や認証に必要なキー、サルト、ノンスの生成に極めて重要である。
  3. 統計とサンプル:
    • 調査や研究のためのサンプルを作成する際、ランダムジェネレーターは代表的で偏りのないサンプルを抽出するのに役立ちます。
  4. シミュレーション・モデル:
    • 科学技術の分野では、乱数発生器は、複雑なシステムをモデル化し分析するために乱数変数を使用するモンテカルロ・シミュレーションを実行するために使用される。
  5. 宝くじとコンペティション:
    • 宝くじ、懸賞、その他のコンペティションにおいて、公正かつ無作為な当選者の選出を保証するものである。
  6. 最適化アルゴリズム:
    • 遺伝的アルゴリズムやシミュレーテッド・アニーリングなどのランダム手法は、ランダムジェネレーターを使って解空間を効率的に探索し、最適解を見つける。
  7. 人工知能と機械学習 学習:
    • ランダムジェネレーターは、データセットを混合し、モデルを検証および訓練するための訓練データとテストデータをランダムに選択するために使用される。

乱数ジェネレータは次のような用途に使われる。 ギャンブル統計的サンプリング、コンピュータ・シミュレーション、暗号、完全ランダム化設計、その他予測不可能な結果の生成が望まれる分野で使用されている。一般に、セキュリティ・アプリケーションのように予測不可能性が重要な特徴であるアプリケーションでは、可能であればハードウェア生成器が好まれます。

擬似乱数生成器は、モンテカルロ・シミュレーション法の開発において非常に有用である。同じ乱数シードから始めると、同じ乱数列を繰り返すことができるため、デバッグが容易になるからである。乱数シードが秘密である限り、暗号にも使われる。送信者と受信者は、鍵として使用する同じ乱数セットを自動的に生成することができる。

擬似乱数の生成は、コンピュータ・プログラミングにおいて重要かつ一般的な作業である。暗号技術やある種の数値アルゴリズムでは非常に高度な見かけ上のランダム性が要求されるが、他の多くの処理では適度な予測不可能性しか要求されない。簡単な例としては、ユーザーに「今日のランダムな言葉」を提示したり、コンピューターゲームの対戦相手がどの方向に動くかを決定したりすることがある。より弱い形のランダム性は、ハッシュアルゴリズムや、償却された検索やソートアルゴリズムの作成に使用されている。

一見ランダム化に適しているように見えるアプリケーションでも、実際にはそれほど単純なものではない。例えば、BGMシステム用に音楽トラックを「ランダム化」するシステムは、ランダムに表示されればよく、選曲を制御する方法さえあればよい。本当にランダム化されたシステムであれば、同じトラックが2回、3回と続けて表示されることに制限はない。


本当の乱数と擬似乱数の比較 ? .

実数と疑似乱数の違いは、予測可能性と乱数の発生源にある。

#1ブラックジャックライブカジノ: playamo

カジノボーナス
  • 本当の乱数: 物理的プロセスに基づく予測不可能なもの。
  • 疑似乱数: アルゴリズムによって生成され、シードがわかっていれば予測可能。

乱数を生成する方法は主に2つある。一つ目の方法は、ランダムと考えられる物理現象を測定し、測定過程で起こりうる歪みを補正する方法である。発生源の例としては、大気ノイズ、熱ノイズ、その他外部からの電磁現象や量子力学的現象の測定がある。例えば、宇宙背景放射や短期間に測定される放射性崩壊は、自然エントロピーの発生源である(数生成過程の予測不可能性や不意打ちの尺度として)。

自然発生源からエントロピーを抽出できる速度は、測定される根本的な物理現象に依存する。したがって、自然に発生する「真の」エントロピーのソースはブロッキングしていると言われ、需要を満たすのに十分なエントロピーが収集されるまで速度が制限される。ほとんどのLinuxディストリビューションを含むいくつかのUnix系システムでは、疑似デバイスファイル/dev/randomは、環境から十分なエントロピーが収集されるまでブロックする。このブロック動作のため、/dev/randomからの大規模な一括データ読み出し(ハードディスクをランダムビットで満たすなど)は、このタイプのエントロピー源を使用するシステムでは、しばしば遅くなることがあります。

2つ目の方法は、一見ランダムな結果の長いシーケンスを生成できる計算アルゴリズムを使用するもので、実際にはシード値またはキーとして知られる短い初期値によって完全に決定される。これにより、シード値がわかっていれば、一見ランダムに見えるシーケンス全体を再現することができる。この種の乱数発生器は、しばしば擬似乱数発生器と呼ばれる。このタイプのジェネレーターは通常ノンブロッキングであるため、外部イベントによってレートが制限されることがなく、大規模なデータの一括読み取りが可能である。

一部のシステムでは、利用可能な場合は自然発生源からランダム性を収集し、希望する読み取り速度が自然収集アプローチの需要を満たす能力を超えた場合に定期的に再シードされる暗号化された安全な疑似乱数発生器(CSPRNG)に依存するハイブリッドアプローチを使用しています。このアプローチは、より低速で純粋に環境ベースの手法に基づく乱数生成器のレート制限によるブロッキング動作を回避します。

決定論的論理のみに基づく擬似乱数生成器は、純粋な意味での「真の」乱数発生源と見なすことはできませんが、セキュリティ・クリティカルなアプリケーションが要求される場合でも、実際には一般的に十分です。慎重に設計され実装された擬似乱数生成器は、YarrowアルゴリズムやFortunaアルゴリズムのように、セキュリティ・クリティカルな暗号目的でも認証されることがある。前者は FreeBSD, AIX, macOS, NetBSD などの /dev/random エントロピーの基礎となっています。OpenBSDはarc4randomとして知られる擬似乱数アルゴリズムを使用しています。


生成方法

物理的方法

サイコロの目、コイントス、ルーレットホイールなど、乱数を発生させる最も初期の方法は、統計学や暗号学のほとんどの用途には遅すぎるため、主にゲームやギャンブルで現在も使用されている。

物理的乱数生成器は、量子力学の法則に起因する予測不可能な、本質的にランダムな原子または素粒子の物理現象に基づくことができる。エントロピーの発生源としては、放射性崩壊、熱雑音、銃声雑音、ツェナー・ダイオードのアバランシェ・ノイズ、時計の偏差、ハードディスクの読み取りヘッドの時間的な動き、ラジオ・ノイズなどがある。しかし、物理現象やその測定に使われる道具は、一般に非対称性や系統的な歪みを示し、その結果を一様なランダムなものにはしない。暗号ハッシュ関数のようなランダム抽出器を使えば、一様でないランダムなソースから一様なビット分布を得ることができるが、ビットレートは低くなる。

2013年、カオスレーザーを用いた高速リアルタイム乱数生成器のプロトタイプが開発された。

このエントロピー情報を収集するための様々な独創的な方法が開発されてきた。その一つは、予測不可能なソースからのビデオストリームのフレームにハッシュ関数を適用する手法である。Lavarandは複数の溶岩ランプからの画像にこの技法を使用した。HotBitsはガイガー・ミュラー管で放射性崩壊を測定し、Random.orgは通常のラジオで大気ノイズの振幅の変動を記録した。

コンピューター支援による方法

コンピュータで生成される乱数のほとんどはPRNGを使用している。PRNGは、優れたランダム性特性を持つ長い数列を自動的に生成できるアルゴリズムだが、最終的には数列が繰り返される(あるいはメモリ使用量が無限に増大する)。このような乱数は多くの状況で十分であるが、エントロピー源として使用される電磁大気ノイズから生成される数値ほどランダムではない。このようなアルゴリズムによって生成される値のセットは、一般にシードと呼ばれる固定数によって決定される。最も一般的なPRNGの1つは線形合同ジェネレータで、再帰関係式

Xn+1=(aXn+b)mod mX_{n+1} = (aX_n + b) \mod mXn+1=(aXn+b)modm

は、aaa, bbb, mmmが大きな整数で、Xn+1X_{n+1}Xn+1が擬似乱数系列の次の数である数を生成するのに使われる。この式が生成できる数の最大値はモジュールmmmである。この再帰関係を行列に拡張することで、より長い周期と優れた統計的性質を持つことができる。単一の線形合同ジェネレータのある種の非ランダム特性を避けるために、乗数係数aaaの値がわずかに異なる複数のこのような乱数ジェネレータを並列に使用し、「マスター」乱数ジェネレータが異なるジェネレータ間を選択することができる。

手動で乱数を生成する簡単な方法として、ジョン・フォン・ノイマンが提案したいわゆる平均二乗法がある。実装は簡単だが、その出力は質が低い。周期が非常に短く、出力列がほとんど常にゼロに収束してしまうなどの重大な弱点がある。最近の技術革新は、平均二乗法とWeyl数列を組み合わせることである。この方法は、長期間にわたって高品質の出力を生成する。

ほとんどのプログラミング言語には、乱数発生器を提供する関数やライブラリルーチンが含まれている。これらは多くの場合、ランダムなバイトまたはワード、あるいは0と1の間の一様分布浮動小数点数を提供するように設計されている。

このようなライブラリ関数の品質、すなわちランダム性は、完全に予測可能な出力から暗号的に安全なものまで、大きく異なります。Python、Ruby、R、IDL、PHPなど多くの言語の標準乱数生成器は、Mersenne Twisterアルゴリズムに基づいており、言語のドキュメントに明示されているように、暗号化目的には十分ではありません。このようなライブラリ関数は統計的性質が乏しいことが多く、数万回の試行でパターンを繰り返すものもある。そのようなクロックは64ビットで、計測単位はナノ秒であり、人間の精度をはるかに超えているからだ。これらの関数は、特定のタスク(ビデオゲームなど)には十分なランダム性を提供しますが、暗号アプリケーションや統計など、高品質のランダム性が要求される場合には不向きです。

例えば、各種BSD派生、Linux、Mac OS X、IRIX、Solarisの/dev/randomや、Microsoft WindowsのCryptGenRandomなどである。上記のものを含め、ほとんどのプログラミング言語は、これらの高レベルのソースにアクセスする方法を提供している。

人々によって生み出される

乱数生成は、エンドユーザーからさまざまな入力を収集し、それを乱数源として使用することによって、人間によって実行することもできる。しかし、ほとんどの研究では、数字や文字などの乱数列を生成しようとすると、被験者はある程度の非乱数性を示すことが分かっている。そのため、この方法はあまり使われていない。ヒトがこのタスクをうまくこなせないのと同じ理由で、ヒトによる乱数生成は、他の手段ではアクセスできない脳機能についての洞察を得るためのツールとして使用することができる。

後処理と統計チェック

もっともらしい乱数発生源(おそらく量子力学ベースのハードウェア・ジェネレーター)を使っても、完全に偏りのない乱数を得るには注意が必要である。これらのジェネレーターの挙動は、温度、電源電圧、デバイスの経年変化、その他の外部からの影響によって変化することが多い。

生成された乱数は、基礎となるソースがまだ機能していることを確認するために、使用される前に統計的テストが行われることがあり、その後、統計的特性を向上させるために後処理が行われる。例えば、TRNG9803ハードウェア乱数生成器は、ハードウェアテストとしてエントロピー測定を使用し、シフトレジスタストリーム暗号で乱数列を後処理します。一般に、生成された乱数を検証するために統計的テストを使用することは困難である。WangとNicolは、複数の乱数生成器の弱点を特定するために使用される距離ベースの統計テスト手法を提案した。LiとWangは、ブラウン運動の特性を利用したレーザーカオスエントロピー源に基づく乱数検査法を提案した。

統計的テストは、乱数発生器の後処理された最終出力が本当に不偏であることを確信させるためにも使用され、数多くの乱数性テストパッケージが開発されている。

さらなる考察

ディストリビューションのカスタマイズ

一様分布

ほとんどの乱数ジェネレーターは、整数またはシングルビットをネイティブに扱うので、0と1の間の "正規の "一様分布を達成するために追加のステップが必要である。その実装は、整数をその可能な最大値で割るような単純なものではない。具体的には

  • 変換に使われる整数は、意図された精度に十分なビットを提供しなければならない。
  • 浮動小数点演算の性質そのものは、数値がゼロに近いほど精度が高くなることを意味する。この余分な精度は、必要なビット数が膨大なため、通常は使用されない。
  • 割り算の際の丸め誤差は、結果を歪める可能性がある。最悪の場合、数学の期待に反して、除外されたはずの領域が実数で描かれてしまうこともある。

OpenJDK、Rust、NumPyで使われている主流のアルゴリズムは、C++のSTLの提案で説明されている。これは余分な精度を利用せず、最も近い偶数への丸めによる最後のビットの歪みに苦しむだけです。この "正統的な "一様分布が異なる範囲にシフトされる場合、他の数値的な懸念が有効である。プログラミング言語Swiftのために提案された方法は、どこでも完全な精度を使用すると主張している。

一様分布整数は、Fisher-Yatesシャッフルのようなアルゴリズムでよく使われる。この場合も、素朴な実装では結果にモジュロの歪みが生じる可能性があるため、より精巧なアルゴリズムを使用する必要がある。除算をほとんど行わない方法が2018年にDaniel Lemireによって説明され、2021年にアップル社のStephen Canonによる算術コーディングにヒントを得た「最適アルゴリズム」が現在の最先端である。

ほとんどの0対1RNGは0を含むが1を含まないが、他のものは両方を含むか含まない。

その他の分配金

一様分布の乱数源が与えられた場合、確率密度関数に対応する新しい乱数源を作成する方法がいくつかあります。反転法と呼ばれる方法の1つは、乱数(適切な分布のためには0と1の間で生成されるべきである)以上の範囲に積分することである。受理-棄却法と呼ばれる2番目の方法は、xとyの値を選び、xの関数がyの値より大きいかどうかをテストする。もしそうであれば,x値が受け入れられる.そうでなければ、x-w

ja日本語