三角随机数发生器

Triangular random number generator

我了解如何生成从 0 到 1 的随机 P 值以及此处指定的函数:

http://en.wikipedia.org/wiki/Triangular_distribution

但是在编写代码 (C#) 时,我陷入了 if 语句,不确定如何编写它们,因为在我的情况下,最小值、模式和最大值将类似于 3、8 和 14,而 P 值始终是 0 到 1。我知道我无法理解数学中非常基本的东西,但我希望得到一些指导。

编辑:这是代码,当然需要替换 if 语句。

    public double a, b, c, F, P;
    private Random pRandom = new Random((int)DateTime.Now.Ticks & 0x0000FFFF);
    public double Tri(double a, double b, double c)
    {
        F = (c - a) / (b - a);
        P = 1.0e-6 * (double)pRandom.Next(1000000);
        if (P > 0 && P < (F))
        {
            return a + Math.Sqrt(P * (b - a) * (c - a));
        }
        else
        {
            return b - Math.Sqrt((1 - P) * (b - a) * (b-c));
        }
    }

你还没有说出你想要达到的目标。通过查看那篇维基百科文章,如果你想为 x 生成不同的值,在我看来你需要这样说, if (rand < f(a,b,c)) { x = a + Math.Sqrt(rand * (b-a) * (c-a)); } else { x = b - Math.Sqrt((1 - rand) * (b-a) * (b-c));}