randomexponential.java~1~

来自「一个一元曲线多项式数值演示例子」· JAVA~1~ 代码 · 共 80 行

JAVA~1~
80
字号
package numbercruncher.mathutils;import java.util.Random;/** * Utility class that generates exponentially-distributed * random values using several algorithms. */public class RandomExponential{    private float mean;    /** generator of uniformly-distributed random values */    private static Random gen = new Random();    /**     * Set the mean.     * @param mean the mean     */    public void setParameters(float mean) { this.mean = mean; }    /**     * Compute the next randomn value using the logarithm algorithm.     * Requires a uniformly-distributed random value in [0, 1).     */    public float nextLog()    {        // Generate a non-zero uniformly-distributed random value.        float u;        while ((u = gen.nextFloat()) == 0);     // try again if 0        return (float) (-mean*Math.log(u));    }    /**     * Compute the next randomn value using the von Neumann algorithm.     * Requires sequences of uniformly-distributed random values     * in [0, 1).     */    public float nextVonNeumann()    {        int   n;        int   k = 0;        float u1;        // Loop to try sequences of uniformly-distributed        // random values.        for (;;) {            n  = 1;            u1 = gen.nextFloat();            float u     = u1;            float uPrev = Float.NaN;            // Loop to generate a sequence of ramdom values            // as long as they are decreasing.            for (;;) {                uPrev = u;                u     = gen.nextFloat();                // No longer decreasing?                if (u > uPrev) {                    // n is even.                    if ((n & 1) == 0) {                        return u1 + k;  // return a random value                    }                    // n is odd.                    else {                        ++k;                        break;          // try another sequence                    }                }                ++n;            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?