2016-05-12 14 views
3

私はこれにつまずいて、いくつかのデータからランダムに偏ったサンプルをしようとしました。 x^2に適合する単純な分布が私が探しているものだと思われますが、ここでは私の頭を包み込むことはできません。ランダムなインデックス分布の奇妙さ

ここでは、x^2で配置された配列内のインデックスを選択し、そのインデックス位置でカウンタをインクリメントするforループのスニペットを示します。

package main 
import "time" 
import "fmt" 
import "math" 
import "math/rand" 

func main() { 
    rand.Seed(time.Now().UTC().UnixNano()) 

    var arr [10]int 

    for i := 0; i < 5000; i++ { 
    rnd := rand.Float64() 
    tmp := rnd * rnd * 9 

    index := int(math.Floor(tmp + .5)) 

    arr[index]++ 
    } 
    fmt.Printf("%v", arr) 
} 

どんなに境界または末尾に顕著「ドロップ」とのグラフが常に出て、このように見てくる値をプロット反復回数、、。

enter image description here

これは私が悩みの理解を持っているものです。インデックスがカーブに完全に合致すべきではありませんか?

私は丸めに関連する何かを疑っていますが、私は現時点でストローを掴んでいます。

答えて

1

まず、あなたのX-スケールは、誤解を招くと10で終わる。0 ... 9でなければならない。

固定されていることを考慮すると、配布は完全に正しいですが、実際には何をしたいのでしょうか?

まず、0と9の間の分布を持ちます。 0.5を追加して切り捨てると、各インデックスのヒット数は、実際に「得る」になるのでしょうか?

:ほとんどのインデックスは小数点1に切り捨てられます1及び2(又は6,7、又は他の任意の間隔)の間の値(又は6、又は任意のインデックス)と「フルセット」を得ます

EXCEPT

エッジ指標 0と9のみ "ハーフフルセット" を取得します。

オフセットインデックス0 ... 1〜0.5 ... 1.5と切り捨てるためです。この範囲の半分のみがインデックス= 0、すなわち、 0から値の間の値。5と1(これはもはや0と0.5の間に何もないので)。

他端と同じです。あなたは8 ... 9から8.5 ... 9.5をオフセットし、次に切り捨てます。インデックス9は1/2しか得られません。 9と9.5の間の値。

グラフの左端は実際には予想よりも低くなりますが、右端と区別できません。

数字は確かに時々驚くべきことです:-)。

5

問題は、ディストリビューションに[0,1]の範囲があり、9を掛けて範囲を[0,9]にした後、0.5を追加すると[0.5,9.5] 。

最後のインデックス値に著しい低下があるだけでなく、各バケットが半分しか満たされていないため、最初のインデックス値に目立たない低下があります。

は、あなたは、単に10によってではなく、9

tmp := rnd * rnd * 10 

を乗算してから床に+ 0.5をオフのままと考えたことがありますか?あなたのような分布が期待される生成

index := int(math.Floor(tmp)) 

が、ここで500,000行くループのためのいくつかの結果である:それは1から始まるよう

[157949 65411 50239 42599 37637 33706 31200 28789 26927 25543] 
[158302 65533 49712 42480 37347 33882 30987 28696 27225 25836] 
[157824 65627 50432 42328 37307 33900 30787 29006 26975 25814] 
+0

直感的に[0.5,9.5]の範囲はまだ[0,9]ですが?それが私が望むものです。あなたのディストリビューションをプロットする代わりに、代わりに最初に「飛び降りる」ように見える:[http://www.wolframalpha.com/input/?i=plot+%5B157949+65411+50239+42599+37637+33706+31200+28789+ 26927 + 25543%5D](http://www.wolframalpha.com/input/?i=plot+%5B157949+65411+50239+42599+37637+33706+31200+28789+26927+25543%5D) – rhardih

関連する問題