从 table 的值制作直方图

Making a histogram out of values from a table

我定义了一个由两个正态分布组成的混合分布,如下所示

MixDist[s_,n_]:=With[{Dist=MixtureDistribution[{.5,.5},{NormalDistribution[0,s],Normaldistribution[0.5s,s]}]},RandomVariate[Dist,n]]

例如,MixDist[1,1000] 应生成 1000 个数字,其分布由 NormalDistribution1[0,1] 和 NormalDistribution2[0.5,1] 组成的混合分布。 现在,我想 运行 这个生成器 100 次,这就是我卡住的地方。

我试过这样做

dist1=Table[MixDist[1,1000],100]

生成具有 100 组 1000 个随机数的 table,但是当尝试使用

绘制直方图时

histogram=Histogram[dist1,20,"ProbabilityDensity"]

显示空白坐标系

来自 table 的数据可以包含在直方图中吗?或者有另一种方法可以做到这一点(从上述混合分布中制作 100 组 1000 个随机生成的数字的直方图)。

谢谢!

简答

mixDist[s_, n_] := With[{
   dist = MixtureDistribution[
     {.5, .5},
     {NormalDistribution[0, s], NormalDistribution[0.5 s, s]}
     ]
   },
  
  RandomVariate[dist, n]
  ]
dist1 = Table[mixDist[1, 1000], 100];
histogram = Histogram[dist1, 20, "ProbabilityDensity"]

详情

  • 唯一的错误是第二个NormalDistribution写成了Normaldistribution
  • 改进了代码风格。我确信 user-defined 变量应该以小写字母开头,以便与系统变量区分开来。