中獎機率演算法(php 可用於刮刮卡,大轉(zhuǎn)盤等抽獎演算法)
Jul 29, 2016 am 09:10 AMphp中獎機率演算法,可用於刮刮卡,大轉(zhuǎn)盤等抽獎演算法。用法很簡單,程式碼裡有詳細(xì)註解說明,一看就懂
<?<span>php </span><span>/*</span><span> * 經(jīng)典的概率算法, * $proArr是一個預(yù)先設(shè)置的數(shù)組, * 假設(shè)數(shù)組為:array(100,200,300,400), * 開始是從1,1000 這個概率范圍內(nèi)篩選第一個數(shù)是否在他的出現(xiàn)概率范圍之內(nèi), * 如果不在,則將概率空間,也就是k的值減去剛剛的那個數(shù)字的概率空間, * 在本例當(dāng)中就是減去100,也就是說第二個數(shù)是在1,900這個范圍內(nèi)篩選的。 * 這樣 篩選到最終,總會有一個數(shù)滿足要求。 * 就相當(dāng)于去一個箱子里摸東西, * 第一個不是,第二個不是,第三個還不是,那最后一個一定是。 * 這個算法簡單,而且效率非常 高, * 關(guān)鍵是這個算法已在我們以前的項目中有應(yīng)用,尤其是大數(shù)據(jù)量的項目中效率非常棒。 </span><span>*/</span><span>function</span> get_rand(<span>$proArr</span><span>) { </span><span>$result</span> = ''<span>; </span><span>//</span><span>概率數(shù)組的總概率精度 </span><span>$proSum</span> = <span>array_sum</span>(<span>$proArr</span><span>); </span><span>//</span><span>概率數(shù)組循環(huán) </span><span>foreach</span> (<span>$proArr</span><span>as</span><span>$key</span> => <span>$proCur</span><span>) { </span><span>$randNum</span> = <span>mt_rand</span>(1, <span>$proSum</span><span>); </span><span>if</span> (<span>$randNum</span> <= <span>$proCur</span><span>) { </span><span>$result</span> = <span>$key</span><span>; </span><span>break</span><span>; } </span><span>else</span><span> { </span><span>$proSum</span> -= <span>$proCur</span><span>; } } </span><span>unset</span> (<span>$proArr</span><span>); </span><span>return</span><span>$result</span><span>; } </span><span>/*</span><span> * 獎項數(shù)組 * 是一個二維數(shù)組,記錄了所有本次抽獎的獎項信息, * 其中id表示中獎等級,prize表示獎品,v表示中獎概率。 * 注意其中的v必須為整數(shù),你可以將對應(yīng)的 獎項的v設(shè)置成0,即意味著該獎項抽中的幾率是0, * 數(shù)組中v的總和(基數(shù)),基數(shù)越大越能體現(xiàn)概率的準(zhǔn)確性。 * 本例中v的總和為100,那么平板電腦對應(yīng)的 中獎概率就是1%, * 如果v的總和是10000,那中獎概率就是萬分之一了。 * </span><span>*/</span><span>$prize_arr</span> = <span>array</span><span>( </span>'0' => <span>array</span>('id'=>1,'prize'=>'平板電腦','v'=>1), '1' => <span>array</span>('id'=>2,'prize'=>'數(shù)碼相機','v'=>5), '2' => <span>array</span>('id'=>3,'prize'=>'音箱設(shè)備','v'=>10), '3' => <span>array</span>('id'=>4,'prize'=>'4G優(yōu)盤','v'=>12), '4' => <span>array</span>('id'=>5,'prize'=>'10Q幣','v'=>22), '5' => <span>array</span>('id'=>6,'prize'=>'下次沒準(zhǔn)就能中哦','v'=>50),<span> ); </span><span>/*</span><span> * 每次前端頁面的請求,PHP循環(huán)獎項設(shè)置數(shù)組, * 通過概率計算函數(shù)get_rand獲取抽中的獎項id。 * 將中獎獎品保存在數(shù)組$res['yes']中, * 而剩下的未中獎的信息保存在$res['no']中, * 最后輸出json個數(shù)數(shù)據(jù)給前端頁面。 </span><span>*/</span><span>foreach</span> (<span>$prize_arr</span><span>as</span><span>$key</span> => <span>$val</span><span>) { </span><span>$arr</span>[<span>$val</span>['id']] = <span>$val</span>['v'<span>]; } </span><span>$rid</span> = get_rand(<span>$arr</span>); <span>//</span><span>根據(jù)概率獲取獎項id </span><span>$res</span>['yes'] = <span>$prize_arr</span>[<span>$rid</span>-1]['prize']; <span>//</span><span>中獎項 </span><span>unset</span>(<span>$prize_arr</span>[<span>$rid</span>-1]); <span>//</span><span>將中獎項從數(shù)組中剔除,剩下未中獎項 </span><span>shuffle</span>(<span>$prize_arr</span>); <span>//</span><span>打亂數(shù)組順序 </span><span>for</span>(<span>$i</span>=0;<span>$i</span><<span>count</span>(<span>$prize_arr</span>);<span>$i</span>++<span>){ </span><span>$pr</span>[] = <span>$prize_arr</span>[<span>$i</span>]['prize'<span>]; } </span><span>$res</span>['no'] = <span>$pr</span><span>; </span><span>print_r</span>(<span>$res</span>);
以上就介紹了中獎機率演算法(php 可用於刮刮卡,大轉(zhuǎn)盤等抽獎演算法),包括了方面的內(nèi)容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區(qū)別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質(zhì)是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質(zhì)是藍(lán)寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結(jié)果會更加的精準(zhǔn)。 GT3pro:多了ECG心電圖和血管及安

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應(yīng)用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅(qū)動程式:不相容的驅(qū)動程式可能會幹?jǐn)_截圖工具。來自其他應(yīng)用程式的干擾:其他正在運行的應(yīng)用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導(dǎo)致此issu簡單的解決方案這些適合大多數(shù)用戶,不需要任何特殊的技術(shù)知識。 1.更新視窗與Microsoft應(yīng)用程式商店應(yīng)用程

標(biāo)題:C#中使用Array.Sort函數(shù)對陣列進(jìn)行排序的範(fàn)例正文:在C#中,陣列是一種常用的資料結(jié)構(gòu),經(jīng)常需要對陣列進(jìn)行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進(jìn)行排序。本文將示範(fàn)如何使用C#中的Array.Sort函數(shù)對陣列進(jìn)行排序,並提供具體的程式碼範(fàn)例。首先,我們要先了解Array.Sort函數(shù)的基本用法。 Array.So

在進(jìn)行PHP編程時,我們常常需要將數(shù)組合併。 PHP提供了array_merge()函數(shù)來完成數(shù)組合併的工作,但是當(dāng)數(shù)組中存在相同的鍵時,函數(shù)會覆寫原來的值。為了解決這個問題,PHP在語言中還提供了一個array_merge_recursive()函數(shù),該函數(shù)可以合併數(shù)組並保留相同鍵的值,使得程式的設(shè)計變得更加靈活。 array_merge

在PHP中,有許多強大的陣列函數(shù)可以讓陣列的操作更加方便和快速。當(dāng)我們需要將兩個陣列拼成一個關(guān)聯(lián)數(shù)組時,可以使用PHP的array_combine函數(shù)來實現(xiàn)這一操作。這個函數(shù)其實是用來將一個陣列的鍵當(dāng)作另一個陣列的值,合併成一個新的關(guān)聯(lián)數(shù)組。接下來,我們將會講解如何使用PHP中的array_combine函數(shù)將兩個陣列拼成關(guān)聯(lián)數(shù)組。了解array_comb

第1部分:初始故障排除步驟檢查蘋果的系統(tǒng)狀態(tài):在深入研究複雜的解決方案之前,讓我們先從基礎(chǔ)知識開始。問題可能不在於您的設(shè)備;蘋果的伺服器可能會關(guān)閉。造訪Apple的系統(tǒng)狀態(tài)頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復(fù)它。檢查您的網(wǎng)路連接:確保您擁有穩(wěn)定的網(wǎng)路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數(shù)據(jù)之間切換或重置網(wǎng)路設(shè)定(「常規(guī)」>「重置」>「重置網(wǎng)路設(shè)定」>設(shè)定)。更新您的iOS版本:

php提交表單通過后,彈出的對話框怎樣在當(dāng)前頁彈出php提交表單通過后,彈出的對話框怎樣在當(dāng)前頁彈出而不是在空白頁彈出?想實現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗證用PHP在后端,那么就用Ajax;僅供參考:HTML code

watch4pro和gt各自具有不使用的特點和適用場景,如果注重功能的全面性、高性能和時尚外觀,同時願意承擔(dān)較高的價格,那麼Watch 4 Pro可能更適合。如果對功能要求不高,更注重電池續(xù)航力和價格的合理性,那麼GT系列可能更適合。最終的選擇應(yīng)根據(jù)個人需求、預(yù)算和喜好來決定,建議在購買前仔細(xì)考慮自己的需求,並參考各種產(chǎn)品的評測和比較,以做出更明智的選擇。
