Random 生成具有已知均值和方差的随机数

Random 生成具有已知均值和方差的随机数,random,Random,从我正在读的一篇论文中,我知道: ... S(t+1, k) = S(t, k) + ... + C*∆ ... ∆ is a standard random variable with mean 0 and variance 1. ... 如何用这个均值和方差生成这一系列随机值?如果有人链接到C或C++库,我会很高兴,但是如果有人告诉我怎么做,我自己也不会介意的:“< p>你可以使用.< /p> 假设U1和U2是在区间(0,1)中均匀分布的独立随机变量 及 那么Z0和Z1是标准偏差为1的

从我正在读的一篇论文中,我知道:

...
S(t+1, k) = S(t, k) + ... + C*∆
...
∆ is a standard random variable with mean 0 and variance 1.
...
如何用这个均值和方差生成这一系列随机值?如果有人链接到C或C++库,我会很高兴,但是如果有人告诉我怎么做,我自己也不会介意的:“

< p>你可以使用.< /p> 假设U1和U2是在区间(0,1)中均匀分布的独立随机变量

那么Z0和Z1是标准偏差为1的正态分布的独立随机变量


您对
\Delta
的分布有任何限制吗?如果没有限制,您可以在
[-sqrt(3),sqrt(3)]
中使用统一分布。这样做的原因是,对于统一分布
[a,b]
来说,方差是
1/(12)(b-a)2  .

是一个成熟的、稳定的C++库,您可以使用它,特别是*WAFFLSSYORGEATION *模块中的噪声函数将按照您的要求运行。


除了中心和分布(均值和标准差)之外,还需要知道随机数的概率分布。如果你正在阅读的论文没有提到这一点,并且没有其他上下文支持的合理推断,那么作者可能指的是正态分布(高斯分布)--因为这是最常见的,并且因为完全指定正态分布所需的两个参数是平均值和标准差。许多分布不是以这种方式指定的——例如,对于伽马分布,需要形状、比例和速率;要指定逻辑,需要位置和比例等。

如果您只想要某个平均值0方差1,可能是最简单的。你有一个统一的随机数生成器,它给你0到1之间的数字吗?如果你想让这个数字非常接近正态分布,你可以加起来12个统一的(0,1)如果你想要它真的是一个正态分布,你可以使用Box-Muller变换,就像马克建议的那样,如果你不介意加入对数、正弦和余弦的话。

他没有说他需要正态/高斯分布,所以只需放大均匀分布就可以了。但是如果他需要高斯分布,你的方法就是这样 go@srean我现在试图复制结果的那篇论文并没有具体说明对数据分布的任何限制∆.那么我建议的是最简单的方法。只需调用你的rand函数并相应地缩放它,使它介于
[-sqrt(3),sqrt(3)]
[0,1]
@srean之间。你是如何找到sqrt(3)值的?@Vitor的。看看uniform的方差公式。它是
1/(12)(b-a)^2
。使均值
0
的最简单方法是对称,因此我们选择
a=-b
。现在将其替换为方差公式并求解,您将得到sqrt(3)。希望这有帮助。我的回答应该更清楚。@Vitor让我知道我是否还有其他需要补充的内容。@Vitor这篇论文的作者没有必要暗示一个高斯随机变量。在很多统计分析中,你所关心的只是时刻。在这种特殊情况下,它似乎只是前两个时刻。因此@Vitor可以灵活地选择满足要求但最容易实现的分布。这相当于[。但调用随机数生成器的代价可能会很高。调用一次并缩放和移动输出更容易。调用sqrt(3)但是它只需要一次。@srean:你说得对,对于制服。对于普通人,我没有计时,但是对数、正弦和余弦调用可能需要更多的时间。这是假设时间是一个问题。它可能不是。