数学の計算機
ナンバージェネレーター


ナンバージェネレーター

指定した範囲や条件(重複なし・ソート等)でランダムな数字を瞬時に作成できる無料のナンバージェネレーター(乱数発生器)です。抽選、宝くじ、パスワード生成、ゲームなど様々な用途に最適。使いやすく便利なランダム番号生成ツールを今すぐご活用ください。

オプション

ランダムな数字

48, 9, 49, 11, 17, 22, 16, 37, 45, 41, 4, 36, 43, 10, 28, 27, 47, 25, 21, 33

計算にエラーがありました。

目次

  1. 乱数発生器の利用について
  2. ランダム配列と非ランダム配列の違い
  3. 乱数発生器の種類
  4. Googleのジェネレーター
  5. 線形合同法(リニアコングルーセント法)
  6. 最新のハードウェア乱数発生器
    1. QRBG121
    2. ラバランプ(LavaRands)
    3. ホットビッツ(HotBits)
    4. 真空の量子ゆらぎ
    5. カーボンナノチューブジェネレーター
    6. サイコロと電子フロンティア財団 (EFF)
    7. ノキア(Nokia)製スマートフォンの量子乱数発生器

ナンバージェネレーター

乱数発生器(RNG:Random Number Generator)は、過去の数値パターンに依存することなく、必要に応じて予測不可能な乱数を生成する仕組みです。これらの乱数は、ソフトウェアのアルゴリズム、または専用のハードウェアデバイスを通じて生成されます。

乱数発生器の利用について

乱数の生成は、コンピュータゲームから日常的なウェブアプリケーションに至るまで、幅広い分野で不可欠な役割を果たしています。たとえば、ウェブサイト上でバナー広告やコンテンツをランダムに表示させたり、暗号技術において解読困難な独自の暗号キー(鍵)を生成したりする際に、乱数発生器が活用されています。

さらに、乱数生成は以下のような多岐にわたる用途で利用されています。 キャプチャ(CAPTCHA)の生成、データの暗号化、パスワード保存時のソルト生成、安全なパスワード生成、オンラインカジノにおけるカードのシャッフル、意思決定のサポート、統計的サンプリング、そしてシミュレーション用の数値やテキストの出力などです。

また、乱数発生器のアルゴリズムは、ビデオゲームにも頻繁に導入されています。同じゲームの同じレベルをプレイしても、毎回全く同じ展開になることはありません。地形やミッション自体は変わらなくても、出現する敵の数や配置、天候の変化、ランダムに発生する障害物などに違いが生まれます。こうした乱数による予測不可能な要素が、ゲーム体験をよりエキサイティングで魅力的なものにしているのです。

ランダム配列と非ランダム配列の違い

ここに一つの数列があると仮定します。1 , 2 , 3 , 4 , 5。果たしてこれはランダムと言えるでしょうか?

ランダム変数(確率変数)とは、試行の結果として特定の値を確率的にとる変数のことです。ある特定の値が出現するまで、その結果を正確に予測することは不可能です。

たとえば、キーボードの一番上の数字列を順番にタイプして、先ほどの数列を得たとしましょう。この場合、5の次には高い確率で6が来ることが予測できるため、この組み合わせは決してランダムではないことが分かります。

配列が真にランダムであると言えるのは、それぞれの記号や数値の間にいかなる依存関係もない場合のみです。

乱数発生器のシステムが公平かつ正確に機能するための最も重要な基本条件は、「システム内で出現しうるすべての数値が、完全に等しい確率で発生すること」です。これは、各乱数が完全に独立しており、その前後にどのような数字が出たかに一切影響を受けないことを意味します。

例えば、6面体のサイコロを初めて振ったとします。このとき、1から6までのどの数字が出る確率も完全に等しくなります。そして、前回どの目が出たかに関わらず、2回目でも、100回目でも、1000回目でも、それぞれの目が出る確率は常に一定です。

円周率(Pi)の数列は繰り返しがないように見え、多くの人にとってはランダムな配列に思えるかもしれません。仮に、ある乱数発生器が円周率の数列に依存し、非公開の任意の小数点以下の位置から数値を生成し始めると仮定します。このようなジェネレーターは多くの状況において予測困難であり、特定のランダム性テストに合格する可能性すらあります。しかし、暗号化やセキュリティの目的で円周率に依存することは非常に危険です。もし悪意のある第三者が、使用されている円周率の特定のセグメントを特定してしまえば、その前後の数値を容易に予測できるようになり、システムの安全性が根本から損なわれてしまいます。

米国国立標準技術研究所(NIST)は、「暗号アプリケーションのための乱数および擬似乱数生成器の統計的テストスイート」を提唱しています。これには、ハードウェアまたはソフトウェアによって生成されたビット列のランダム性を評価・測定するための15種類の厳密な統計テストが含まれています。

乱数発生器の種類

乱数発生器(RNG)は、主に真の乱数発生器(TRNG)と擬似乱数発生器(PRNG)の2種類に大別されます。TRNGが物理現象を応用して数値を生成するのに対し、PRNGは数学的なアルゴリズムを用いて乱数を生成します。

真の乱数発生器(TRNG)は、乱数を生成するための「エントロピー」として、微小な物理的プロセスを利用するハードウェアデバイスによって構築されます。ここでのエントロピーとは、人為的なフィルターを通さない純粋なカオス(無秩序状態)を指します。

真の乱数発生器は、主に以下のような物理現象を利用しています。

  • 放射性崩壊
  • 熱雑音(サーマルノイズ)
  • 電磁波ノイズ
  • 量子力学的な現象 など

真のRNG(TRNG)は、高度なセキュリティが要求される世界中のシステムや、強力な暗号化通信において広く採用されています。TRNGはエントロピー源からエントロピーを蓄積し、乱数生成に必要な初期値(シード)を取得します。

一方、擬似乱数発生器(PRNG)のアルゴリズムは、厳密なセキュリティが求められない分野で頻繁に使用されます。適度なランダム性を付与することでパターンの反復を防ぎ、エンドユーザーにとって自然で魅力的な処理を実現できます。PRNGの実装には専用のハードウェアが不要で、プログラムコード内に容易に組み込めるため、低コストかつ高速に乱数を生成できるのが大きなメリットです。完全なカオスではなくアルゴリズムに基づいて決定される仕組みですが、ゲーム開発や一般的なソフトウェアプログラムには非常に適しています。

PRNGは単一の初期値(シード)を使用し、そこから計算によって擬似的な乱数性を導き出します。対して真の乱数発生器は、さまざまなエントロピー源から常に高品質な乱数値を抽出し続けることで、予測不可能な真の乱数を生成します。

ただし、擬似乱数生成(PRNG)にはセキュリティ上の欠点が存在します。素人の目にはランダムに見えるため日常的な用途には十分ですが、もし攻撃者が特定のPRNGアルゴリズムの初期値(シード)を知ってしまった場合、次にどの数字が出現するかを完全に予測できてしまいます。

タイムアタック(スピードラン)を楽しむビデオゲームの愛好家たちは、しばしばこの脆弱性を突きます。「RNG操作(乱数調整)」と呼ばれるテクニックを駆使し、ゲームの展開を予測可能な状態にして、最速でゲームをクリアするのです。ゲームの領域であれば、これは致命的な問題にはなりません。

しかし、乱数の予測不可能性が極めて重要な意味を持つ場面もあります。その代表例が、セキュリティキーの生成です。

もし攻撃者が、TLS証明書のRSA鍵生成に使用された初期値を特定してしまった場合、ネットワークトラフィック全体が解読される恐れがあります。つまり、インターネット上で送受信されるパスワードやクレジットカード情報、個人情報などが第三者に筒抜けになってしまうのです。

このような高いセキュリティが求められる状況では、より安全で予測不可能な乱数取得方法、すなわち「真の乱数発生器(TRNG)」が不可欠となります。

Googleのジェネレーター

Googleは、JavaScriptベースの独自の乱数生成ツールを提供しています。このツールは、友人や家族とゲームをする際などに手軽に使えて非常に便利です。Googleの検索窓に「乱数発生器」または「乱数生成」と入力して検索するだけで、検索結果のトップにこのジェネレーターが表示され、すぐに利用することができます。

線形合同法(リニアコングルーセント法)

擬似乱数生成器の最も代表的で古典的なアルゴリズムの一つが「線形合同法(Linear Congruential Generator, LCG)」です。実装が単純なケースでよく使われますが、暗号論的な強度(セキュリティ的な安全性)はありません。この手法は、1949年にデリック・ヘンリー・レーマーによって提案されました。

線形合同法を用いて乱数を生成するには、以下の4つのパラメータを定義する必要があります。

m > 0, モジュラス(法)

0 ≤ a ≤ m, 乗数

0 ≤ c ≤ m, 増分

0 ≤ X₀ ≤ m, 初期値(シード)

乱数列は、次の漸化式(数式)によって次々と生成されます。

Xₙ₊₁ = (aXₙ + c) mod m

この手法は、パラメータの選択に大きく依存するという点に注意が必要です。

例えば、以下のようなパラメータを設定したとします。

X₀ = 3, a = 4, c = 5, m = 6

この場合、次のような短い反復配列が出力されます。

3, 5, 1, 3, 5, 1

このような短い周期では、到底ランダムな数列には見えません。

しかし、パラメータを別の適切な値に変更すると結果は大きく変わります。

X₀ = 2, a = 85, c = 507, m = 1356

この設定では、結果のばらつきがより予測不可能になります。線形合同法に使用する数値は、慎重に選択しなければなりません。 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365...

線形合同法は、統計的な観点からは良好な擬似乱数列を生成することができますが、暗号学的には堅牢ではありません。線形合同法に基づくジェネレーターは出力から内部状態の予測が可能であるため、暗号化技術に用いることは不適切です。

事実、線形合同法を用いた生成器は、1977年にJim Reedsによって初めて解読(クラック)され、その後1982年にJoan Boyarによっても破られました。彼女はさらに、2次および3次の合同法生成器を破ることにも成功しています。これにより、合同法に基づくジェネレーターは暗号用途には適さないことが完全に証明されました。しかし、線形合同法は暗号以外の用途(例えば、統計的なシミュレーションやシンプルなゲームなど)では依然として有用です。計算効率が非常に高く、ほとんどの経験的テストにおいて優れた統計的性能を示します。

最新のハードウェア乱数発生器

QRBG121

このデバイスにおけるランダム生成の仕組みは、半導体内での光子(フォトン)の発光と、それに続く個々の光子の検出という量子物理学的なプロセスに依存しています。このプロセスでは、各光子が互いに完全に独立してランダムに検出されます。そして、検出された光子のタイミング情報を利用して、予測不可能な真の乱数ビットが生成されます。

ラバランプ(LavaRands)

ウェブセキュリティ企業のCloudflare(クラウドフレア)のサンフランシスコオフィスには、「ラバランプ」を利用したユニークな乱数発生器が設置されています。ラバランプとは、ガラス容器の中に透明なオイルと半透明のワックス(パラフィン)を入れた照明器具です。ワックスはオイルよりもわずかに重いですが、ランプの熱で温められると軽くなり、不規則に浮き上がったり沈んだりを繰り返します。

Cloudflareでは、この液体の予測不可能なカオス的な動きを複数のカメラで継続的に撮影しています。そのスナップショットの画像データをピクセル単位の数値に変換し、それをエントロピー源として強力な暗号鍵を生成しているのです。

また、Cloudflareの他のオフィスでも、独自の物理現象を用いてランダムな値を取得しています。ロンドンオフィスでは、二重振り子と呼ばれるカオス的な動きをする3つの振り子をカメラで撮影しています。シンガポールオフィスでは、少量のウランの放射性崩壊を測定するガイガーカウンターを使用しています。放射性物質は崩壊するたびに完全にランダムなタイミングで放射線を出す性質があるため、非常に優れた「天然のデータソース」となります。

ホットビッツ(HotBits)

HotBitsは、電離放射線を計測するガイガーカウンターによって生成された「真の乱数」を、インターネット経由で誰にでも提供しているサービスです。サイト上のリクエストフォームで必要な乱数のバイト数を指定し、希望するデータ取得方法を選択するだけで利用できます。セキュリティを確保するため、生成された乱数はユーザーに提供された直後にシステムから完全に削除されます。

真空の量子ゆらぎ

「真空(Vacuum)」という言葉は「空っぽ(Empty)」を意味しますが、量子力学の世界では決して何も存在しない空間ではありません。ハイゼンベルクの不確定性原理によれば、真空空間では仮想粒子が絶え間なく生成されては消滅を繰り返しています。

カナダの研究チームは、この「真空の量子ゆらぎ」を利用した、高速かつ構造的にシンプルな乱数発生器を設計しました。このシステムは、高周波パルスレーザー、高屈折率の媒質(ダイヤモンド)、そして特殊な検出器で構成されています。レーザーパルスがダイヤモンドを通過する際、光子は真空場における予測不可能なゆらぎの影響を受け、検出器上で毎回異なる特性を示します。

散乱された放射線を分析すると、そのスペクトルには特有のスペクトル線が現れます。真空のゆらぎは根本的に予測不可能であるため、生成される数値パターンも毎回完全に予測不可能となり、極めて純度の高い乱数が得られます。

カーボンナノチューブジェネレーター

この方法は、エントロピー源としての熱雑音の利用と、デバイスの極小化を両立させる画期的な技術です。

研究チームは、半導体カーボンナノチューブを含む特殊なインクを用いて印刷された静的ランダムアクセスメモリ(SRAM)セルから、乱数発生器を開発しました。このメモリセルは、ナノスケールでの熱雑音のゆらぎを直接利用してランダムなビット列を生成します。

このカーボンナノチューブベースのRNGは、柔軟なプラスチック基板上に印刷できるという大きな特徴があります。そのため、小型のフレキシブル電子機器、ウェアラブルセンサー、使い捨てのセキュリティラベル、さらにはスマート衣料品などへ容易に組み込むことが可能です。

サイコロと電子フロンティア財団 (EFF)

電子フロンティア財団(EFF)は、物理的な乱数発生器を利用して、非常に強力かつ安全なパスワード(パスフレーズ)を誰でも簡単に作成できる方法を提唱しています。それは、「サイコロ」を使ったシンプルな手法です。

例えば、5つのサイコロを同時に(または1つのサイコロを5回)振り、出た目を順番に書き留めます。出た目が左から「6、3、1、3、1」だったとしましょう。次に、EFFの公式ウェブサイトで公開されている長い単語リスト(Dicewareリスト)を開き、「63131」に対応する単語を探します。すると「turbofan(ターボファン)」という単語が見つかります。

この手順を必要な回数(例えば5回)繰り返します。その結果、「turbofan purge after pruning tri(ターボファン・パージ・アフター・プルーニング・トライ)」のようなランダムな単語の羅列(パスフレーズ)が完成します。一見無意味な羅列ですが、簡単なニーモニック(記憶術)を利用することで人間にとっては覚えやすく、かつコンピュータには解読が極めて困難なパスワードとなります。

ノキア(Nokia)製スマートフォンの量子乱数発生器

2014年、ジュネーブ大学の研究チームは、当時のスマートフォン「Nokia N9」のカメラ機能を活用して、量子乱数発生器(QRNG)として機能させることに成功しました。

この仕組みでは、スマートフォンのカメラセンサー(CMOS)を用いて、各ピクセルに到達する光子(フォトン)の数を正確にカウントします。光源には標準的なLEDが使用されました。8メガピクセル(800万画素)のカメラの各ピクセルは、わずかな時間の間に約400個の光子を検出します。研究チームは、すべてのピクセルにおける光子の総数の微小な量子ゆらぎを抽出し、それを完全に予測不可能な真の乱数列へと変換する画期的な方法を実証しました。