質問

このの質問と参加者との会話で、明確にバイアスされた有限数の乱数セットをシャッフルすると、彼らが選択された順序がわからないため、ランダムになります。これは真実ですか?そうであれば、誰かがいくつかのリソースを指すことができますか?

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

役に立ちましたか?

解決

False。

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

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

他のヒント

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

一般的に、<!> quot; random <!> quot;数字は、たとえば低い数字に偏り、順序に関係なく、そのように偏ります。

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

警告付きでfalseと言います:

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

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

一方で、大金が手元にあるラスベガスで使用されるビデオゲームを書いている場合、ランダムに異なる方法で定義します(そして、本当にランダムなものを見つけるのに苦労するかもしれません)。

False

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

ただし、一部の用途では、これよりも優れたランダムジェネレーターが必要になります。そのため、必要な乱数の数と、必要な乱数の数に正確に依存します。


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


編集する追加:不正な番号ジェネレーターがシーケンス(1,2,2,1,1,2)を生成したとします。置換<=>は random の定義を満たしますか?

完全かつまったく真実ではない:シャッフルはバイアスを除去せず、偏見のあるオブザーバーからそれを隠すだけです。それは、ソファの下を押すだけで、愛犬が敷かれたプレゼントをカーペットから取り除くようなものです。あなたは本当に問題を解決しておらず、目立たないようにしています。鼻を持っている人は誰でも、除去する必要がある問題があることを知っています。

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

target = 200
numberofnumbers = 30
numbers = array();
for (i=0; i<numberofnumbers; i++)
  numbers[i] = 9
while (sum(numbers)>target)
  numbers[random(numberofnumbers)]--

False。ゼロのみを生成する不正な乱数ジェネレーターを考えてみてください(私はそれが Bad だったと言いました:-)ゼロをシャッフルしても、 any そのシーケンスのプロパティ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top