gpt4 book ai didi

c# - 使用高斯分布生成 0 到 1 之间的随机数

转载 作者:太空狗 更新时间:2023-10-29 20:31:03 27 4
gpt4 key购买 nike

我想在 C# 中编写一个方法来生成一个随机数,其高斯分布在 [0:1] 范围内(并且提前在 [0-x] 中)。我找到了这段代码,但无法正常工作

Random rand = new Random(); //reuse this if you are generating many
double u1 = rand.NextDouble(); //these are uniform(0,1) random doubles
double u2 = rand.NextDouble();
double randStdNormal = Math.Abs( Math.Sqrt(-2.0 * Math.Log(u1)) *
Math.Sin(2.0 * Math.PI * u2));

最佳答案

我写了一篇关于如何生成任意给定分布的随机数的博文:

http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/

总结一下,你想要的算法是:

  1. 计算出所需的概率分布函数,使曲线一部分下方的面积等于在该范围内随机生成某个值的概率。
  2. 对概率分布进行积分以确定累积分布
  3. 反转累积分布以获得分位数函数
  4. 通过分位数函数运行在 (0,1) 上均匀分布的随机数据。

当然,如果您已经知道所需分布的分位数函数,则无需执行第一步到第三步。

关于c# - 使用高斯分布生成 0 到 1 之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15973043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com