-ジョン・フォン・ノイマン
このような優れたサービスrandom.orgがあります。これはすでにハブで何度も言及されています このサイトの主なタスクは、大気ノイズを使用した乱数の生成です。 同じサイトで、ランダムおよび擬似ランダムジェネレーターのテスト結果と比較を見つけることができます。 この記事では、サイトAPIを使用するためのシンプルなライブラリについて説明します。
Random.org
Random.orgには、乱数の生成を使用する便利な機能がたくさんあります。コインの投げ、サイコロ、カードのシャッフル、宝くじの組み合わせの取得、サウンドの生成、ビットマップなど。 特定のディストリビューション用のカスタム生成もあります。 原則として、これはすべて複雑ではありませんが、興味深い事実は、生成が大気ノイズを使用して行われることであり、これにより、 何らかの方法で 、Random.nextInt()よりも優れたランダムを取得できます。 それから、そのようなAPIを備えたライブラリを用意しておくといいと思い、それを書くことにしました。
検索する
書く前に、あなたは見る必要があります。おそらく誰かがすでにこれをしているでしょう。 はい しました。
- Simple Random.Org Java Apiは、整数を生成するメソッドを備えたシンプルなライブラリですが、 Apache HTTPクライアントの依存関係(658キロバイト)を引き出します。
- Java TRNGクライアント -ここではすべてがより深刻です。 2つの(!)サイトを使用した40キロバイトと数値生成。 はい、欠点は、暗号化のためにライブラリが作成されたことです。ビット、バイトを処理し、一般的にすべてが複雑であるためです。
一般的に、私は自分で書くことにしました。
API
Random.orgはプリミティブなHTTP GET APIを提供しますが、それ以上は必要ありません。 操作は4種類のみです。
整数ジェネレーター
指定された範囲でランダムな整数を生成します。 たとえば、これは2つのサイコロを振るリクエストです。
http://www.random.org/integers/?num=2&min=1&max=6&col=1&base=10&format=plain&rnd=new
シーケンスジェネレーター
指定された範囲内のすべての一意の整数でシーケンスを生成します。 本質的にCollections.shuffle()が行うこと。 たとえば、これはカードのデッキをシャッフルするためのリクエストです:
http://www.random.org/sequences/?min=1&max=52&col=1&format=plain&rnd=new
ストリングジェネレーター
文字のセット(数字、恋人の場合、ラッパーの場合)を選択する機能を使用して、指定されたサイズのランダムな文字列を生成します。 したがって、たとえば、
http://www.random.org/strings/?num=1&len=12&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new
クォータチェッカー
既に理解しているように、これはすべて無料ではありません。 そうではありませんが、1日あたり100万ビットを無料で提供します。 これで十分です。 そして、どれだけ残っているかを調べるために、次のリンクを使用できます。
http://www.random.org/quota/?format=plain
前の3つのリンクをクリックした場合、すでに1500ビットを費やしています。
間違い
生成が成功すると、サーバーはコード200、失敗-コード503を返します。これがすべてのエラーです。
このAPIの場合、 5つのクラスのライブラリがJavaで記述されており、上記のすべてのメソッドの呼び出しが単純で理解可能な形式で行われています。
// IntegerGenerator ig = new IntegerGenerator(); ig.generate(1, 6, 2); // SequenceGenerator sg = new SequenceGenerator(); sg.generate(1, 52); // StringGenerator strg = new StringGenerator(); strg.generate(12, 1, true, true, true, true); // QuotaChecker qc = new QuotaChecker(); qc.quota();
すべてのように。 githubで、ソースを表示し、元の名前randomorg (6キロバイト)でlibをダウンロードできます 。