【问题标题】:Random number geneation in c# using normal distrc# 中使用普通分布的随机数生成器
【发布时间】:2014-11-22 13:47:05
【问题描述】:

我是 c# 的新手,我正在尝试从 c# 中的正态分布生成数字。我在网上搜索,我只发现了一些代码。我想使用现成的内置函数而不是代码!!有什么建议吗?

【问题讨论】:

  • 通过这个希望它有所帮助 -- :blogs.msdn.com/b/ericlippert/archive/2012/02/21/…
  • 感谢您的回复,但我已经找到了。这段代码提供了 cauchy distr 的方法。我想要一个关于 c# 的统计库,但我找不到任何个人代码除外
  • 为什么投反对票?我认为他们不明白这个问题。

标签: c# random numbers


【解决方案1】:

你还需要做一些编码:

  1. 定义正态分布。
  2. 从中取样。

注意,您需要定义一次,然后采样,而不是重新定义。

也许这个小类可以提供帮助,那么您可以在您需要的代码中使用它...

    public class BoxMullerNormal
        {                       
            private MathNet.Numerics.Distributions.Normal normal;

            public BoxMullerNormal(double mean = 0,double std = .01)
            {
                normal = new MathNet.Numerics.Distributions.Normal(mean,std);            
            }

            public override dynamic getRandom()
            {
                // Implementation Uses C#MathNet.Numerics Normal Distribution Sampling
                return normal.Sample();                          
            }
}

在您的应用程序开始时初始化该类以定义法线,然后每次只需调用getRandom() 即可从中采样。您还可以将该类添加到您现有的接口中。

【讨论】:

    【解决方案2】:

    MathNet Numerics 库有许多不同的随机数生成器。我很确定正态分布是其中一种选择。

    Read this

    如果你滚动到底部,我相信它会有你想要的。

    【讨论】:

      猜你喜欢
      • 2014-07-16
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 2014-10-17
      • 2023-04-04
      相关资源
      最近更新 更多