Zufallsgenerator: Erzeuge eine zufällige Zahl & erfahre alles dazu!
ランダムジェネレータ:乱数を作成し、それについてのすべてを見つける!

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

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

Zuletzt geprüft und aktualisiert: Juni 2026 von Sara Devegano

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

乱数発生器


Zufallsgenerator: Erzeuge eine zufällige Zahl & erfahre alles dazu! - 2024年7月22日

乱数発生器の仕組み🔍

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

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

擬似乱数を生成するための計算方法はいくつかある。しかし、これらの方法は、その結果がどの程度予測できないか(つまり、そのパターンがどの程度認識可能か)を測定するために設計されたランダム性の統計的テストに、程度の差こそあれ合格することができます。そのため、暗号のような用途には一般的に使えない。しかし、慎重に設計された暗号化セキュア擬似乱数ジェネレータ(CSPRNGS)もあり、暗号化で使用するために特別に設計された特別な機能を備えています。 インサート は暗号技術で開発された。

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

私の ベスト オンラインカジノ体験 私は プレイアモカジノ 作られた。私の意見では ベストセレクション ライブディーラーのいるテーブルで、本番のカジノの練習をします。他の多くのオンラインカジノとは対照的に、ここでの賞金は本当に素早く確実に支払われます。だからこそ、私はPlayamoをお勧めできるのです!

Playamoカジノでは、多数のライブブラックジャックテーブルと、高速のブラックジャックテーブルを提供しています。 ペイアウト 私たちの利益の
今すぐボタンをクリックして、ボーナスを獲得してください!
Zufallsgenerator: Erzeuge eine zufällige Zahl & erfahre alles dazu! - 2024年7月22日

ランダム生成器の応用

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

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

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

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

Einige Anwendungen, die auf den ersten Blick für Randomisierung geeignet erscheinen, sind in Wirklichkeit nicht so einfach. Zum Beispiel muss ein System, das „zufällig“ Musikstücke für ein Hintergrundmusiksystem auswählt, nur zufällig erscheinen und kann sogar Möglichkeiten haben, die Musikauswahl zu 牡牛: Ein wirklich zufälliges System hätte keine Einschränkung, dass derselbe Titel zwei- oder dreimal hintereinander erscheinen könnte.


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

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

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

乱数を生成する方法は主に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は、ブラウン運動の特性を利用したレーザーカオスエントロピー源に基づく乱数検査法を提案した。

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

さらなる考察

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

一様分布

Die meisten Zufallszahlengeneratoren arbeiten nativ mit ganzen Zahlen oder einzelnen Bits, daher ist ein zusätzlicher Schritt erforderlich, um die „kanonische“ Gleichverteilung zwischen 0 und 1 zu erreichen. Die Implementierung ist nicht so trivial wie die Division der Ganzzahl durch ihren 最大 möglichen Wert. Konkret:

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

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

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

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

その他の分配金

Wenn eine Quelle von gleichmäßig verteilten Zufallszahlen vorliegt, gibt es einige Methoden, um eine neue Zufallsquelle zu erstellen, die einer Wahrscheinlichkeitsdichtefunktion entspricht. Eine Methode namens Inversionsmethode beinhaltet das Integrieren bis zu einem Bereich, der größer oder 同等 der Zufallszahl ist (die für ordnungsgemäße Verteilungen zwischen 0 und 1 erzeugt werden sollte). Eine zweite Methode namens Akzeptanz-Ablehnungs-Methode beinhaltet die Wahl eines x- und y-Werts und das テスト, ob die Funktion von x größer ist als der y-Wert. Wenn dies der Fall ist, wird der x-Wert akzeptiert. Andernfalls wird der x-W