茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    java使用StdRandom生成隨機(jī)數(shù)
    來(lái)源:易賢網(wǎng) 閱讀:3204 次 日期:2015-04-15 14:41:14
    溫馨提示:易賢網(wǎng)小編為您整理了“java使用StdRandom生成隨機(jī)數(shù)”,方便廣大網(wǎng)友查閱!

    StdRandom提供一系列的靜態(tài)方法用于產(chǎn)生滿(mǎn)足多種需求的隨機(jī)數(shù),具體代碼如下:

    package crazymonkey.math;

    import java.util.Random;

    /**

    * 此類(lèi)提供一系列產(chǎn)生隨機(jī)數(shù)的方法,以滿(mǎn)足不同用例需要

    * @author crazyMonkey

    */

    public final class StdRandom {

    //隨機(jī)數(shù)對(duì)象

    private static Random random;

    //用于產(chǎn)生隨機(jī)數(shù)的種子

    private static long seed;

    // 靜態(tài)初始化區(qū)域

    static {

    //產(chǎn)生隨機(jī)數(shù)種子

    seed = System.currentTimeMillis();

    random = new Random(seed);

    }

    private StdRandom() { }

    /***********************************************************

    * 產(chǎn)生基本的隨機(jī)數(shù)

    ***********************************************************/

    /**

    * 獲取此類(lèi)實(shí)例的偽隨機(jī)種子生成器

    */

    public static void setSeed(long s) {

    seed = s;

    random = new Random(seed);

    }

    /**

    * 獲取此類(lèi)實(shí)例提供的偽隨機(jī)種子生成器

    */

    public static long getSeed() {

    return seed;

    }

    /**

    * 返回一個(gè)隨機(jī)的范圍在[0,1)之間的double類(lèi)型的數(shù)

    */

    public static double uniform() {

    return random.nextDouble();

    }

    /**

    * 返回一個(gè)隨機(jī)的范圍在[0,N)之間的int類(lèi)型的數(shù)

    */

    public static int uniform(int N) {

    return random.nextInt(N);

    }

    /**

    * 返回一個(gè)范圍在 [0, 1)的實(shí)數(shù)

    */

    public static double random() {

    return uniform();

    }

    /**

    * 返回一個(gè)范圍在 [a, b)的int類(lèi)型值

    */

    public static int uniform(int a, int b) {

    return a + uniform(b - a);

    }

    /**

    * 返回一個(gè)范圍在 [a, b)的實(shí)數(shù)

    */

    public static double uniform(double a, double b) {

    return a + uniform() * (b-a);

    }

    /**

    * 返回一個(gè)隨機(jī)boolean值,該p表示此布爾值為真的概率

    * @param p 0~1 之間的double值,表示產(chǎn)生boolean真值的可能性

    */

    public static boolean bernoulli(double p) {

    return uniform() < p;

    }

    /**

    * 返回一個(gè)隨機(jī)boolean值,此布爾值為真的概率為0.5

    */

    public static boolean bernoulli() {

    return bernoulli(0.5);

    }

    /***********************************************************

    * 產(chǎn)生滿(mǎn)足特定概率分布的實(shí)數(shù)

    ***********************************************************/

    /**

    * 返回一個(gè)滿(mǎn)足標(biāo)準(zhǔn)正態(tài)分布的實(shí)數(shù)

    */

    public static double gaussian() {

    double r, x, y;

    do {

    x = uniform(-1.0, 1.0);

    y = uniform(-1.0, 1.0);

    r = x*x + y*y;

    } while (r >= 1 || r == 0);

    return x * Math.sqrt(-2 * Math.log(r) / r);

    }

    /**

    * 返回一個(gè)滿(mǎn)足平均值為mean,標(biāo)準(zhǔn)差為stddev的正態(tài)分布的實(shí)數(shù)

    * @param mean 正態(tài)分布的平均值

    * @param stddev 正太分布的標(biāo)準(zhǔn)差

    */

    public static double gaussian(double mean, double stddev) {

    return mean + stddev * gaussian();

    }

    /**

    * 返回一個(gè)滿(mǎn)足幾何分布的整型值 平均值為1/p

    */

    public static int geometric(double p) {

    // Knuth

    return (int) Math.ceil(Math.log(uniform()) / Math.log(1.0 - p));

    }

    /**

    * 根據(jù)指定的參數(shù)返回一個(gè)滿(mǎn)足泊松分布的實(shí)數(shù)

    */

    public static int poisson(double lambda) {

    // 使用 Knuth 的算法

    // 參見(jiàn)

    int k = 0;

    double p = 1.0;

    double L = Math.exp(-lambda);

    do {

    k++;

    p *= uniform();

    } while (p >= L);

    return k-1;

    }

    /**

    * 根據(jù)指定的參數(shù)按返回一個(gè)滿(mǎn)足帕雷托分布的實(shí)數(shù)

    */

    public static double pareto(double alpha) {

    return Math.pow(1 - uniform(), -1.0/alpha) - 1.0;

    }

    /**

    * 返回一個(gè)滿(mǎn)足柯西分布的實(shí)數(shù)

    */

    public static double cauchy() {

    return Math.tan(Math.PI * (uniform() - 0.5));

    }

    /**

    * 返回一個(gè)滿(mǎn)足離散分布的int類(lèi)型的數(shù)

    * @param a 算法產(chǎn)生隨機(jī)數(shù)過(guò)程中需要使用此數(shù)組的數(shù)據(jù),a[i]代表i出現(xiàn)的概率

    * 前提條件 a[i] 非負(fù)切和接近 1.0

    */

    public static int discrete(double[] a) {

    double EPSILON = 1E-14;

    double sum = 0.0;

    for (int i = 0; i < a.length; i++) {

    if (a[i] < 0.0) throw new IllegalArgumentException("數(shù)組元素 " + i + " 為負(fù)數(shù): " + a[i]);

    sum = sum + a[i];

    }

    if (sum > 1.0 + EPSILON || sum < 1.0 - EPSILON)

    throw new IllegalArgumentException("數(shù)組各個(gè)元素之和為: " + sum);

    while (true) {

    double r = uniform();

    sum = 0.0;

    for (int i = 0; i < a.length; i++) {

    sum = sum + a[i];

    if (sum > r) return i;

    }

    }

    }

    /**

    * 返回一個(gè)滿(mǎn)足指數(shù)分布的實(shí)數(shù),該指數(shù)分布比率為lambda

    */

    public static double exp(double lambda) {

    return -Math.log(1 - uniform()) / lambda;

    }

    /***********************************************************

    * 數(shù)組操作

    ***********************************************************/

    /**

    * 隨機(jī)打亂指定的Object型數(shù)組

    * @param a 待打亂的Object型數(shù)組

    */

    public static void shuffle(Object[] a) {

    int N = a.length;

    for (int i = 0; i < N; i++) {

    int r = i + uniform(N-i);

    Object temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    /**

    * 隨機(jī)打亂指定的double型數(shù)組

    * @param a 待打亂的double型數(shù)組

    */

    public static void shuffle(double[] a) {

    int N = a.length;

    for (int i = 0; i < N; i++) {

    int r = i + uniform(N-i);

    double temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    /**

    * 隨機(jī)打亂指定的int型數(shù)組

    * @param a 待打亂的int型數(shù)組

    */

    public static void shuffle(int[] a) {

    int N = a.length;

    for (int i = 0; i < N; i++) {

    int r = i + uniform(N-i);

    int temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    /**

    * 隨機(jī)打亂指定Object類(lèi)型數(shù)組中指定范圍的數(shù)據(jù)

    *

    * @param a 指定的數(shù)組

    * @param lo 起始位置

    * @param hi 結(jié)束位置

    */

    public static void shuffle(Object[] a, int lo, int hi) {

    if (lo < 0 || lo > hi || hi >= a.length) {

    throw new IndexOutOfBoundsException("不合法的邊界");

    }

    for (int i = lo; i <= hi; i++) {

    int r = i + uniform(hi-i+1);

    Object temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    /**

    * 隨機(jī)打亂指定double類(lèi)型數(shù)組中指定范圍的數(shù)據(jù)

    *

    * @param a 指定的數(shù)組

    * @param lo 起始位置

    * @param hi 結(jié)束位置

    */

    public static void shuffle(double[] a, int lo, int hi) {

    if (lo < 0 || lo > hi || hi >= a.length) {

    throw new IndexOutOfBoundsException("不合法的邊界");

    }

    for (int i = lo; i <= hi; i++) {

    int r = i + uniform(hi-i+1);

    double temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    /**

    * 隨機(jī)打亂指定int類(lèi)型數(shù)組中指定范圍的數(shù)據(jù)

    *

    * @param a 指定的數(shù)組

    * @param lo 起始位置

    * @param hi 結(jié)束位置

    */

    public static void shuffle(int[] a, int lo, int hi) {

    if (lo < 0 || lo > hi || hi >= a.length) {

    throw new IndexOutOfBoundsException("不合法的邊界");

    }

    for (int i = lo; i <= hi; i++) {

    int r = i + uniform(hi-i+1);

    int temp = a[i];

    a[i] = a[r];

    a[r] = temp;

    }

    }

    }

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:java使用StdRandom生成隨機(jī)數(shù)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
    咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)