偽の一様乱数:真の一様データよりも均等に分布


43

私は、均一に分布しているように見える乱数を生成する方法を探しています-そして、すべてのテストはそれらが均一であることを示します- 真の均一データよりも均等に分布していることを除いて。

「真の」均一なランダムの問題は、それらが時々クラスター化することです。この効果は、サンプルサイズが小さいほど強くなります。大まかに言って、U [0; 1]で2つのUniformランダムを描画すると、確率が0.1の範囲内にある可能性は約10%、0.01の範囲内にある可能性は1%です。

だから私は均一な乱数よりも均等に分布している乱数を生成する良い方法を探しています。

ユースケースの例:私はコンピューターゲームをやっていて、地図にランダムに宝物を置きたい(他のことは気にしない)とします。宝物をすべて1か所に集めたくはありません。地図全体に宝物を置くべきです。一様なランダムでは、たとえば10個のオブジェクトを配置した場合、5個ほどが互いに非常に近いという可能性は低くありません。これにより、あるプレイヤーが別のプレイヤーよりも有利になる場合があります。掃海艇について考えてみてください(十分な機雷がある場合は低いとはいえ)、あなたは本当に幸運で、ワンクリックで勝つことができます。

私の問題に対する非常に素朴なアプローチは、データをグリッドに分割することです。数が十分に大きい(そして要因がある)限り、この方法で余分な均一性を強制できます。したがって、U [0; 1]から12個のランダム変数を描画する代わりに、U [0; .5]から6個、U [0.5; 1]から6個、またはU [0; 1/3] + 4から4個描画できます。 U [1/3; 2/3]から+ U [2/3;から4; 1]。

この余分な均一性をユニフォームに取り入れるより良い方法はありますか?おそらく、バッチランダムに対してのみ機能します(単一のランダムを描画するときは、明らかに範囲全体を考慮する必要があります)。特に、後でレコードをシャッフルすることができます(したがって、最初の3番目から4番目のレコードではありません)。

少しずつやってみてはいかがですか?それで、最初はU [0; 1]にあり、次に各半分から2つ、各3つから1つ、各4つから1つですか?これは調査されましたか?xとyに異なるジェネレーターを使用して、それらを相関させないように注意する必要があります(最初のxyは常に下半分、2番目は左半分と下3番目、3番目は中央3番目と上3番目です)。 ..だから、少なくともいくつかのランダムなビンの並べ替えも必要です。そして、長期的には、それはあまりにも均一になると思います。

サイドノードとして、分布が均一になりすぎて真に均一にならないかどうかをテストすることはよく知られていますか?そのため、「真の統一」と「誰かがデータをいじり、アイテムをより均等に分散させる」ことをテストします。正しく思い出せば、Hopkins Statisticはこれを測定できますが、テストにも使用できますか?またやや逆KS-テスト:最大偏差が特定の予想しきい値を下回っている場合、データは均等に分散されていますか?


7
Haltonシーケンスについて聞いたことがありますか?「均等すぎる」ために、人々は(メンデルのエンドウの実験結果のフィッシャーの調査から始めて)(通常の)カイ2乗統計をカイ2乗分布の下端に言及しています。
whuber

これを形式化する1つの方法は、配信先となるであろう例えば、(1)にmarginalizesを上、(2 )は対称です。つまり、は交換可能(3)が分散している場合は大きくなります。無限の交換可能なシーケンスは負の相関をとることができないため、(2)と(3)に実際の問題があると思います。したがって、使用するが大きいほど反発が少なくなります。一方、が大きい、とにかく良いスプレッドが必要です。、G 1 、X 1xはN - 1 gでX 1X nは G X 1xはNxは1x n R ng(x1,...,xn)g()1x1,...,xn1gX1,...,Xng(x1,...,xn)x1,...,xnRnn

Haltonシーケンスは、私が考えていたアプローチにかなり近いものです。相関のリスクを減らすために、最初のいくつかのエントリをスキップすることを含みます。また、各レベルにランダムな順列を使用することも考えていました。これは関連するメソッドを検索する良いポイントになるので、このポインターをありがとう!
アノニムース

うん 再びハルトンシーケンス。少なくとも最初のシードを除いて、それらを非決定的にする必要があります。ここには2つの方法があります。ランダムオフセット+ランダムスタートオフセット+ステップサイズで循環シフトを行うことができます。問題は、もちろん、ゲームの例に残る「宝」も、常に互いに対して同じ位置にあるべきではないということです。または、私の質問で持っていたこのサブインターバルからの均一アプローチを使用して、ある程度の「ランダムツイスト」を追加できます。つまり、Haltonは私の使用には予測しにくく、規則的すぎると思われます。
アノニムース

3
en.wikipedia.org/wiki/Low-discrepancy_sequenceまたはmathworld.wolfram.com/QuasirandomSequence.html。均一なRNGの一般的なテストのいくつか(Diehard / Dieharderの一連のテストなど)は、そのようなことに敏感です。たとえば、ポイント間の「小さな距離」が少なすぎます。
Glen_b

回答:


60

はい、ランダムなユニフォームよりも均等に分布する数値のシーケンスを生成する多くの方法があります。実際、この質問専用のフィールド全体があります。準モンテカルロ(QMC)のバックボーンです。以下は、絶対的な基本の簡単なツアーです。

均一性の測定

これを行うには多くの方法がありますが、最も一般的な方法には、強力で直感的な幾何学的な風味があります。我々が発生に関係していると仮定し点におけるいくつかの正の整数のために。定義 ここでは長方形 in、およびX 1xは2... X nは [ 0 1 ] D Dnx1,x2,,xn[0,1]dd

Dn:=supRR|1ni=1n1(xiR)vol(R)|,
R[a1,b1]××[ad,bd][0,1]d0aibi1Rそのようなすべての長方形のセットです。弾性内側第一項は、内部点の割合が「観察」である第二項の体積である、。RRvol(R)=i(biai)

数量は、ポイントセットの不一致または極端な不一致と呼ばれることがよくあります。直観的に、ポイントの割合が完全な均一性の下で予想されるものから最も逸脱する「最悪の」長方形を見つけます。Dn(xi)R

これは実際には扱いにくく、計算が困難です。ほとんどの場合、人々はスターの不一致、 作業することを好みます 唯一の違いは、最高値がとられる集合です。これは、(原点にある)固定された長方形のセットです。つまり、です。

Dn=supRA|1ni=1n1(xiR)vol(R)|.
Aa1=a2==ad=0

補題:すべてのため、。証明。、左手の境界は明らかです。すべてのは結合、交差、アンカーされた長方形の補数(つまり)を介して構成できるため、右側の境界が続きます。DnDn2dDnnd
ARRR2dA

したがって、とは、が大きくなるにつれて一方が小さくなると、他方も小さくなるという意味で同等であることがわかります。これは、各不一致の候補矩形を示す(漫画)写真です。DnDnn

極値と星の不一致

「良い」シーケンスの例

スターの不一致が検証可能なほど低いシーケンスは、当然のことながら、不一致の少ないシーケンスと呼ばれますDn

Corputデア・バン。これはおそらく最も単純な例です。以下のために、Corput配列デアバンは整数を拡大することによって形成されるバイナリで、次いで小数点の周りに「数字を反映します」。より形式的に、これを用いて行われるラジカル逆基底関数、 ここでおよびは基数展開の数字です。この関数は、他の多くのシーケンスの基礎にもなります。たとえば、バイナリのは、d=1ib

ϕb(i)=k=0akbk1,
i=k=0akbkakbi41101001a0=1、、、、と。したがって、van der Corputシーケンスの41番目のポイントはです。a1=0a2=0a3=1a4=0a5=1x41=ϕ2(41)=0.100101(base 2)=37/64

最下位ビットはと間で振動するため、奇数点はにあり、偶数点はあることに注意してください。i01xii[1/2,1)xii(0,1/2)

ハルトンシーケンス。最も人気のある古典的な低差異シーケンスの中で、これらはファンデルコープットシーケンスの多次元への拡張です。してみましょうこと最小の素数番目。次いで、番目の点の次元ハルトン配列である 低これらは非常にうまく機能しますが、高次元では問題ありますpjjixid

xi=(ϕp1(i),ϕp2(i),,ϕpd(i)).
d

Haltonシーケンスは満たし。また、点の構築がシーケンス長さのアプリオリな選択に依存しないという点で拡張可能であるため、優れています。Dn=O(n1(logn)d)n

ハマースリーシーケンス。これは、Haltonシーケンスの非常に単純な変更です。代わりに おそらく驚くべきことに、利点は星の食い違いです。

xi=(i/n,ϕp1(i),ϕp2(i),,ϕpd1(i)).
Dn=O(n1(logn)d1)

以下は、2次元のHaltonおよびHammersleyシーケンスの例です。

ハルトンとハマーズリー

フォーレ-置換さハルトン・シーケンス。Haltonシーケンスを生成するときに、特別な順列(関数として固定)を各桁拡張適用できます。これは、高次元で示唆される問題を(ある程度)改善するのに役立ちます。各順列には、とを固定小数点として保持する興味深い特性があります。iaki0b1

格子ルール。ましょう整数です。取る ここで、は小数部。値を慎重に選択すると、均一性が良好になります。選択が不適切な場合、シーケンスが正しくない可能性があります。また、拡張できません。以下に2つの例を示します。β1,,βd1

xi=(i/n,{iβ1/n},,{iβd1/n}),
{y}yβ

良い格子と悪い格子

(t,m,s)ネット。ベースネットは、ボリュームすべての長方形にポイントが含まれるようなポイントのセットです。これは強力な均一性です。この場合、小さなはあなたの友人です。Halton、Sobol '、Faureシーケンスはネットの例です。これらは、スクランブルによるランダム化に適しています。ネットのランダムスクランブリング(右に実行)は、別のネットを生成します。ミントのプロジェクトは、このような配列のコレクションを保持します。(t,m,s)bbtm[0,1]sbtt(t,m,s)(t,m,s)(t,m,s)

単純なランダム化:Cranley-Patterson rotations。ましょうポイントのシーケンスです。ましょう。次に、点は均一に分布します。xi[0,1]dUU(0,1)x^i={xi+U}[0,1]d

以下は、青い点が元の点で、赤い点が回転点で、それらが線で結ばれている例です(必要に応じて、ラップされて表示されています)。

クランリーパターソン

完全に均一に分散されたシーケンス。これは、均一性のより強力な概念であり、時にはそれが出てきます。してみましょう内の点のシーケンスであるとなりましたサイズのオーバーラップブロックを形成シーケンスを取得する。したがって、場合、、などとなります。すべて、場合、は完全に均一に分布していると言われます。言い換えると、シーケンスは任意の点のセットを生成します(ui)[0,1]d(xi)s=3x1=(u1,u2,u3)x2=(u2,u3,u4) s1Dn(x1,,xn)0(ui)望ましいプロパティを持つディメンション。Dn

例として、場合、点は正方形および点にあるため、van der Corputシーケンスは完全に均一に分布していません。はます。したがって、正方形には点がなく、これは場合、すべてのをます。s=2x2i(0,1/2)×[1/2,1)x2i1[1/2,1)×(0,1/2)(0,1/2)×(0,1/2)s=2Dn1/4n

標準参照

Niederreiter(1992)モノグラフと牙と王(1994)テキストは、さらなる調査のために行く場所です。


4
この回答は素晴らしいものであり、皆さんの努力に感謝したいだけです。ありがとうございました!
アノニムース

1
ちょっとしたフォローアップの質問。Haltonシーケンスは、見た目もきれいです。なぜなら、それらも規則的ではないように見えるからです。ラティスの要素は私にとって非常に規則的であり、Hammersleyシーケンスには、原点を通る線上に多くのオブジェクトがあるようです。真のユニフォームと偽のユニフォームのバランスを制御する良い方法は何ですか?Haltonから80%の貢献+ 20%の一様ランダムを取得しますか?
アノニムース

1
+ 10kと間違いなく記録的な低(87 !!!!)の回答!ああ、この投稿はとても気に入っています。実際、質問をブックマークしました。よくやった、@ cardinal。
マクロ

@Macro:このような素晴らしいコメントをありがとうございます!ご親切に。この10Kは一時的なものだと思います。Procrastinatorの投票が取り消されるとすぐに、10Kを大きく下回る可能性があります。実際には、まだこれが起こっていないことに驚いています。私は彼らがこのサイトでほぼ3000票を投じたと信じています。こちらにも投稿していただきありがとうございます。どういうわけか私はアノニ・ムースのフォローアップの質問を見たことがありません!
枢機

@ Anony-Mousse:応答のひどい遅れをおApびします。これらのコメントを見過ごしていたに違いありません。バランスをとることはあなたの目標次第だと思います。理論的に言えば、ランダムな一様点を導入すると、たとえば最適なプロパティが破壊されることになります。実際問題として、シーケンスのプロパティに基づいてジッタが選択されるQMCポイントの非常に小さなジッタを使用する方が良い場合があります。また、すべてのポイントにランダムな剛体変換を導入することもできます。たとえば、シフトや座標の回転などです。DD
2013年

3

これを行う1つの方法は、均一な乱数を生成し、好きな方法で「近さ」をテストし、他の物体に近すぎるランダムなアイテムを削除し、それらを補うランダムなユニフォームの別のセットを選択することです。

そのような分布は、均一性のすべてのテストに合格しますか?期待しないでください!それはもはや均一に配布されていませんが、現在は他のいくつかの配布です。

確率の単一の側面は、チャンスが塊であるということです。人々が存在すると思うよりもランダムなデータの実行が多い。Tverskyはこれについていくつかの研究を行ったと思います(ただし、彼はあまりにも多くのことを研究したため、覚えにくい)。


2
このアプローチの(多くの)問題の1つは、結果の分布を特徴付けることが非常に難しいことです。
whuber

OPは、小さなサンプルサイズに最も関心を持っているようです。これは、彼が配布全体を気にする必要がないことを示唆しています。座標のセットがあると仮定して、別の座標を生成し、他のすべての座標に関してユークリッド距離を計算します。最小距離がしきい値を下回っている場合は、数値を捨てて新しい数値を生成します。ピーターのソリューションはうまく機能すると思います。
ジョン

@whuber私は間違っているかもしれませんが、彼はそれに興味がないようです。
ピーターフロム-モニカを復活

2
異議をもう少し明確に述べましょう、ピーター:クラスタリングの欠如などの望ましい特性を近似するために、アドホックな方法で疑似ランダム値を削除および/または調整すると、結果のシーケンスが任意の望ましい特性。たとえば、メソッドを使用して、結果のプロセスの最初の瞬間がどうなるかを教えてもらえますか?(つまり、強度が均一であることを保証できますか?)2番目の瞬間はどうですか?通常、これらは推論のためにシーケンスを効果的に使用するために必要な最小限の情報を構成します。
whuber

2
わかりましたが、質問の例では、ゲーム内の地図に宝物を置きたいと考えています。それには、推論や瞬間、またはそのようなものは一切含まれません。私の方法は多くの目的に適さないと認めますが、例と一致すると思います。もちろん、この例は実際に彼が望んでいるものではないかもしれません。...彼はもっとフォーマルなものを望んでいるかもしれません。
ピーターフロム-モニカの復職

3

これは「ハードコア」ポアソンポイントプロセスとして知られています。1970年代にブライアンリプリーによって命名されました。つまり、ランダムにしたいが、ポイントが近すぎないようにします。「ハードコア」は、他のポイントが侵入できないバッファーゾーンと考えることができます。

あなたが都市のいくつかの車の位置を記録していると想像してください-しかし、あなたは車の名目上の中心の点だけを記録しています。それらが路上にある間、ポイントは車体の「ハードコア」によって保護されているため、2つのポイントペアを互いに近づけることはできません。高層駐車場の潜在的なスーパーポジションは無視します:-)

このようなポイントプロセスを生成する手順があります。1つの方法は、ポイントを均一に生成してから、近すぎるポイントを削除することです。

そのようなプロセスの詳細については、例えばこれを参照してください


2

事前のバッチ生成に関しては、多数の疑似ランダム変量のセットを生成してから、Kolmogorov-Smirnov検定などの検定でそれらをテストします。最も高い p値を持つセットを選択します(つまり、が理想的です)。これは遅いことに注意してください。ただし、が大きくなると、おそらく必要性が少なくなります。 p1N

インクリメンタル生成に関しては、本質的に中程度に負の自己相関を持つシリーズを探しています。時系列の経験は非常に限られているため、これを行うための最善の方法が何であるかはわかりませんが、これには既存のアルゴリズムがあると思われます。

"too even"のテストに関しては、サンプルが特定の分布(上記のKSなど)に従うかどうかのテストが行​​われますが、ではなく、単にチェックしたいだけです。標準的なアプローチ。この代替アプローチの例については、ここで書きました。カイ2乗は常に片側検定です。 p>(1α)


1

この方法で問題を定式化します。密度が上の分布が必要ですは、ポイントの反発を定量化するです。[0,1]nf(x)e(1kij|xixj|k)1kk<0

このようなベクトルを生成する簡単な方法の1つは、ギブスサンプリングを行うことです。


これについて詳しく説明していただけますか?条件付き分布=周辺分布=均一であるため、ギブスサンプリングはここでは役に立たないようです。または、以前のサンプルを使用して、サンプルの配布元に「穴」を作成することをお勧めしますか?
アノニムース

一様なランダムベクトルを選択し、インデックスを繰り返し一様に選択し、をリサンプリングします。リサンプリングの前後での比率を計算し、オッズリサンプリングを拒否します。これは、グローバル拒否ではなくローカル拒否を実行しているため、非常に長いベクトルがある場合に得られる他の回答よりもはるかに高速です。ixirf(x)r
ニールG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.