Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 随机指数分布奇异性_Random_Go_Statistics - Fatal编程技术网

Random 随机指数分布奇异性

Random 随机指数分布奇异性,random,go,statistics,Random,Go,Statistics,我偶然发现了这一点,试图从一些数据中随机抽取有偏差的样本。我正在寻找一个适合x^2的简单分布,但这里有一个人工制品,我无法完全理解 下面是一个for循环的片段,该循环在x^2分布的数组中选择一个索引,然后在该索引位置递增计数器 package main import "time" import "fmt" import "math" import "math/rand" func main() { rand.Seed(time.Now().UTC().UnixNano()) var

我偶然发现了这一点,试图从一些数据中随机抽取有偏差的样本。我正在寻找一个适合x^2的简单分布,但这里有一个人工制品,我无法完全理解

下面是一个for循环的片段,该循环在x^2分布的数组中选择一个索引,然后在该索引位置递增计数器

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)
}
主程序包
导入“时间”
输入“fmt”
导入“数学”
导入“数学/兰德”
func main(){
rand.Seed(time.Now().UTC().UnixNano())
var arr[10]int
对于i:=0;i<5000;i++{
rnd:=rand.Float64()
tmp:=rnd*rnd*9
索引:=int(数学层(tmp+.5))
arr[索引]++
}
格式打印F(“%v”,arr)
}
无论边界或迭代次数如何,绘制值时,图形总是这样显示,最后出现一个明显的“下降”

这就是我难以理解的。难道这些指数不应该完全符合曲线吗


我怀疑与四舍五入有关的东西,但我现在正在抓救命稻草。

问题是你的分布有[0,1]的范围,然后乘以9,得到[0,9],再加上0.5,得到[0.5,9.5]的范围

不仅最后一个索引值有明显的下降,而且第一个索引值也有不明显的下降,因为每个桶只装满了一半

你考虑过简单地乘以10而不是9吗

tmp := rnd * rnd * 10
然后在你的地板上去掉+0.5

index := int(math.Floor(tmp))
这将产生一个如您所期望的分布,下面是循环到500000的一些结果:

[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]

首先,你的X标度有误导性,因为它从1开始,以10结束。应该是0…9

考虑到它是固定的,您的分布是完全正确的,尽管可能不是有意的(您实际上想要什么?)

首先,分布在0和9之间(包括0和9)。如果你加上0.5,然后四舍五入,问问自己每个索引可以实际“获得”多少点击次数

A:大多数索引获得一个“完整集”,其十进制值介于1和2之间(或6和7之间,或任何其他间隔),四舍五入为1(或6,或任何索引)

边缘索引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之间

图表的左端实际上比你预期的要低,尽管它不像右端那么容易辨别


这些数字有时确实令人惊讶:-)。

直观地说,[0.5,9.5]的范围仍然是[0,9],对吗?这就是我想要的。相反,绘制分布图似乎在开始时有一个“跳跃”: