搜尋
首頁PHP 函式庫其它類別庫中獎機率演算法的php函數類
中獎機率演算法的php函數類
<?php
function get_rand($proArr) {
    $result = '';
    //概率数组的总概率精度
    $proSum = array_sum($proArr);
    //概率数组循环
    foreach ($proArr as $key => $proCur) {
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $proCur) {
            $result = $key;
            break;
        } else {
            $proSum -= $proCur;
        }
    }
    unset ($proArr);
    return $result;
}

獎項數組是一個二維數組,記錄了所有本次抽獎的獎項信息,其中id表示中獎等級,prize表示獎品,v表示中獎概率。注意其中的v必須為整數,你可以將對應的獎項的v設定成0,即意味著該獎項抽中的幾率是0,數組中v的總和(基數),基數越大越能體現機率的準確性。本例中v的總和為100,那麼平板電腦對應的 中獎機率就是1%,如果v的總和是10000,那中獎機率就是萬分之一了。 $proArr是一個預先設定的數組,假設數組為:array(100,200,300,400),開始是從1,1000 這個機率範圍內篩選第一個數是否在他的出現機率範圍之內,如果不在,則將機率空間,也就是k的值減去剛剛的那個數字的機率空間,在本例當中就是減去100,也就是說第二個數是在1,900這個範圍內篩選的。這樣 篩選到最終,總會有一個數滿足要求。就等於去一個箱子裡摸東西,第一個不是,第二個不是,第三個還不是,那最後一個一定是。這個演算法簡單,而且效率非常 高,關鍵是這個演算法已在我們先前的專案中有應用,尤其是大數據量的專案中效率非常棒。


免責聲明

本站所有資源皆由網友貢獻或各大下載網站轉載。請自行檢查軟體的完整性!本站所有資源僅供學習參考。請不要將它們用於商業目的。否則,一切後果都由您負責!如有侵權,請聯絡我們刪除。聯絡方式:admin@php.cn

相關文章

為什麼要從 Python 中的「object」繼承:一個類別繼承問題為什麼要從 Python 中的「object」繼承:一個類別繼承問題

24Dec2024

了解 Python 類別繼承在 Python 中,類別可以從其他類別繼承,這使它們能夠存取父類別的屬性並...

php中透過陣列進行高效率隨機抽取指定筆記錄的演算法_PHP教程php中透過陣列進行高效率隨機抽取指定筆記錄的演算法_PHP教程

21Jul2016

php中透過陣列進行高效率隨機抽取指定筆記錄的演算法。 php使用陣列array_rand()函數進行高效隨機抽取指定條數的記錄,可以隨機抽取資料庫中的記錄,適合進行隨機展示和抽獎程序。 該演算法主要是

如何在 Linux 上建立和使用動態共用 C 類別庫?如何在 Linux 上建立和使用動態共用 C 類別庫?

05Dec2024

在 Linux 上建立和使用動態共用 C 類別庫建立共用類別庫要建立共用 C 類別庫,您可以依照...

PHP5試用(二)_PHP教程PHP5試用(二)_PHP教程

21Jul2016

PHP5試用(二)。抽象類別 抽象類別不能被實例化。 抽象類別與其它類別一樣,允許定義變數及方法。 抽象類別同樣可以定義一個抽象的方法,抽象類別的方法不會被執

為什麼無法在字段初始化程序中初始化非靜態字段?為什麼無法在字段初始化程序中初始化非靜態字段?

03Jan2025

了解欄位初始化問題在您的程式碼中,您有一個儲存庫類別 (DinnerRepository) 和一個服務類別 (Service),它使用...

如何在 NetBeans 中設定 Java 專案的類別路徑?如何在 NetBeans 中設定 Java 專案的類別路徑?

07Dec2024

在 NetBeans 中設定類別路徑在 NetBeans 中使用 Java 時,您可能需要調整類別路徑以包含其他程式庫或 JAR...

See all articles