三角随机数发生器

时间:2015-05-10 10:44:21

标签: c# random distribution

我理解如何生成从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));
        }
    }

1 个答案:

答案 0 :(得分:-1)

你还没有说出你想要达到的目标。从查看维基百科的文章,如果你想为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));}