如何在给定标准偏差(sigma)的 PHP 中创建正态分布的随机数?

Posted

技术标签:

【中文标题】如何在给定标准偏差(sigma)的 PHP 中创建正态分布的随机数?【英文标题】:How to create normally distributed random numbers in PHP with given standard deviation(sigma)? 【发布时间】:2014-04-12 12:29:49 【问题描述】:

我需要正态分布的随机数。因此,我实现了这里提到的 Polar 方法:

Polar Method

效果很好。但我的问题是它只给了我标准的正态分布随机数。但我还需要一些具有另一个标准偏差(sigma)的数据。

所以我需要这个生成器来生成具有给定标准偏差 (sigma) 的正态分布随机数。

目前我只能创建类似蓝色的东西(标准): Graphics

这可能吗?

【问题讨论】:

【参考方案1】:

标准正态分布随机数的标准差等于 1。如果您只是将这些随机数乘以 X,其中 X 是一个正数,那么您将创建标准差等于 X 的正态分布数 :-) .

【讨论】:

效果很好,而且非常简单。谢谢你。这是线性变换吗? @user1851634 我猜你可以称之为线性变换。【参考方案2】:

您可能想查看inverse transform sampling。它允许您创建任何分布的随机数。

基本思想是获取所需分布的密度函数并将其整合。这为您提供了 CDF(累积分布函数)。水平 x 轴显示值,垂直 y 轴显示随机值小于或等于其对应 x 值的概率,范围介于 0 和 1 之间。

然后,您获取一个均匀分布在 0 和 1 之间的随机数流,将它们用作 y 值并查找相应的 x 值。然后,x 值流将按照您的意愿分发。这意味着您实际上需要 CDF 的倒数来查找 x 值。因此是“逆”变换采样。

计算具有给定 sigma 的正态分布的 ICDF 并非易事,但您可以查一下。

【讨论】:

也感谢您快速详细的回答。

以上是关于如何在给定标准偏差(sigma)的 PHP 中创建正态分布的随机数?的主要内容,如果未能解决你的问题,请参考以下文章

我必须在 C 中创建一个带有指向数组的结构数组

如何在jquery中创建一个简单的计算

如何有效地计算运行标准偏差?

halcon算子翻译——estimate_noise

如何在python中创建给定结构的元组[关闭]

给定指定的分贝级别,如何在 R 中创建波浪声音?