3

この質問について考え、参加者と話し合っていると、明確にバイアスされた乱数の有限集合をシャッフルすると、選択された順序がわからないため、乱数がランダムになるという考えが浮かびました。これは本当ですか?もしそうなら、誰かがいくつかのリソースを指すことができますか?

編集:私は少し不明確だったかもしれないと思います。不正な乱数ジェネレーターを想定します。n個の値を取ります。これらは偏っています(rngは悪いです)。複数の試行にわたるrngの出力を、既知の良好なrngの出力と統計的に一致させる方法はありますか?

4

7 に答える 7

8

誤り。

簡単なテストがあります。元のセット作成アルゴリズムのバイアスが「算術平均が予想平均よりも大幅に低いセットを作成する」であると想定します。明らかに、アルゴリズムの結果をシャッフルしても平均は変更されないため、バイアスが除去されません。

また、あなたの説明に関して:あなたはどのようにセットをシャッフルしますか?そもそもセットを作成した不良RNGからの同じ不良出力を使用していますか?または、より優れたRNGを使用していますか?これは、なぜそれを直接使用しないのかという疑問を提起します。

于 2009-01-23T12:24:36.620 に答える
3

それは真実ではありませんもう1つの質問では、問題は[1..9]で合計200の30個の乱数を選択することです。平均して約20個の乱数をランダムに選択すると、9個を選択できなくなります。合計を200以上にします。残りの10個の数字のうち、ほとんどは1と2になります。したがって、最終的には、選択した数値で1と2が非常に多く表示されます。シャッフルはそれを変えません。しかし、ランダム分布が実際にどのように見えるべきかは明確ではないため、これは他のどのソリューションよりも優れたソリューションであると言えます。

一般に、「乱数」がたとえば低い数値にバイアスされる場合、順序に関係なく、そのようにバイアスされます。

于 2009-01-23T12:22:10.540 に答える
0

誤り

セットは有限であり、n数値で構成されていると仮定します。n+1数字を選ぶとどうなりますか?また、多くの言語で実装されている、で乱数を与える基本的な乱数関数についても考えてみましょう[0,1)。ただし、この数は小数点以下3桁に制限されており、1000個の可能な数のセットが得られます(0.000 - 0.999)。ただし、ほとんどの場合、これらの1000の数値すべてを使用する必要はないため、この量のランダム性で十分です。

ただし、用途によっては、これよりも優れたランダムジェネレーターが必要になります。つまり、必要な乱数の正確な数と、それらを必要とする乱数の数になります。


元の質問を読んだ後の追加:ある種の制限がある場合(選択した数字の各セットを合計して特定の数字にする必要がある元の質問などN)、実際には乱数自体が選択されるのではなく、与えられたセットからのランダムな順序の数字(具体的には、合計がN)までの数字の順列。


編集する追加:不良番号ジェネレーターがシーケンスを生成したとします(1,1,1,2,2,2)。順列はランダム(1,2,2,1,1,2)の定義を満たしていますか?

于 2009-01-23T12:11:30.577 に答える
0

もちろん、すでに乱数のセットをシャッフルするだけでは、確率分布には何の影響もありません。それは誤りを意味します。おそらく私はあなたの質問を誤解していますか?

于 2009-01-23T12:13:46.297 に答える
0

注意して、私は間違っていると言います:

ランダムがあると思います、そして「ランダム-十分」があります。私が取り組む必要のあるほとんどのアプリケーションでは、「ランダム-十分」で十分でした。つまり、「ランダム」広告を選択して、そのサイトに配置するために支払われた300程度のリストからページに表示します。

数学者は、私の非常に基本的な「ランダム」選択基準が真にランダムではないことを証明できると確信していますが、実際には予測可能です。クライアントにとっても、ユーザーにとっても、誰も気にしません。

一方、多額のお金が手元にあるラスベガスで使用するビデオゲームを書いている場合は、ランダムを別の方法で定義します(そして、真にランダムを思い付くのに苦労するかもしれません)。

于 2009-01-23T12:17:16.603 に答える
0

完全にそして完全に真実ではない:シャッフルは偏見を取り除くのではなく、それをカジュアルな観察者から隠すだけです。それは、ソファの下を押すだけで、犬の愛情を込めて敷き詰められたプレゼントをカーペットから取り除くようなものです。問題は実際には解決されておらず、目立たなくなっただけです。鼻を持っている人なら誰でも、取り除く必要のある問題がまだあることを知っています。

ランダム性は範囲全体に均等に適用する必要があるため、ここに1つの方法があります(頭のてっぺんから、たくさんの仮定、ヤッダヤッダ。ポイントは、コードではなくアプローチです。すべてを均等に始めてから、ランダム性を導入します。完了するまで一貫した方法です。現在の唯一のバイアスは、質問の一部である「target」と「numberofnumbers」に選択された値に依存しています。)

target = 200
numberofnumbers = 30
numbers = array();
for (i=0; i<numberofnumbers; i++)
  numbers[i] = 9
while (sum(numbers)>target)
  numbers[random(numberofnumbers)]--
于 2009-01-23T13:19:00.020 に答える
0

間違い。ゼロのみを生成する悪い乱数ジェネレーターを考えてみましょう (私はそれが悪いと言いました:-) ゼロをいくらシャッフルしても、そのシーケンスのプロパティは変更されません。

于 2011-07-22T21:30:00.977 に答える