【问题标题】:Make numpy uniform more uniform让 numpy 制服更均匀
【发布时间】:2016-04-09 18:30:02
【问题描述】:

我需要生成一组 10^5 个数据点,将这些数据点分箱成直方图后,与数据的拟合是一条水平线。 使用 np.random.uniform 不够统一(见情节)。关于如何使均匀分布更均匀而不是那么随机的任何想法???

【问题讨论】:

  • numpy.linspace(-3, 3, 100000)?您想要比现有代码更统一多少?你能量化它吗?
  • 您是否提前知道直方图 bin 是什么?
  • 谢谢!我将 linspace 与 random.uniform 结合起来得到了我需要的东西,这基本上通过统计测试证明了数据的分布与水平线的分布几乎相同(超过 95% 的概率它们是相同的分布)

标签: python numpy statistics distribution uniform-distribution


【解决方案1】:

它是随机的——当然它不会完全匹配完美的均匀分布。方差应该很小,并且随着样本数量的增加而相互减小。如果您确实想要具有有限数量的样本的精确均匀分布,那么您将不再有均匀分布;您有一个排列,您可以使用numpy.random.permutation 生成它。

很难找到明确的信息,但我认为 NumPy 的默认生成器基于 Mersenne Twister RNG,它具有出色的统计特性。同样,问题不在于这些样本不统一。例如,查看at the documentation 的直方图与您的相似。

【讨论】:

  • 是的,numpy 确实使用了 Mersenne Twister(参见 here)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2016-06-17
相关资源
最近更新 更多