久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

php實現自定義中獎項數和概率的抽獎函數示例

這篇文章主要介紹了php實現自定義中獎項數和概率的抽獎函數,涉及php字符串、數組的概率運算相關操作技巧,需要的朋友可以參考下

本文實例講述了php實現自定義中獎項數和概率的抽獎函數。分享給大家供大家參考,具體如下:

<?php
/*
* 一個抽獎類,精確到萬分之一
* 三個步驟:1.接受一個中獎概率數組;2.接受一個抽獎種子;3.返回中獎等級
*/
class Lottery {
/*
* 中獎概率數組,自動判斷獎項數目
* 數組鍵值和為100,自動計算出不中獎的概率,若初始是超過100拋出一個錯誤
*/
protected $_rate = array();
/*
* 設置中獎概率,
* @param Array,中獎概率,以數組形式傳入
*/
public function setRate($rate = array(12.1, 34)) {
$this->_rate = $rate;
if (array_sum($this->_rate) > 100)//檢測概率設置是否有問題
throw new Exception('Winning rate upto 100%');
if (array_sum($this->_rate) < 100)
//定義未中獎情況的概率,用戶給的概率只和為100時,則忽略0
$this->_rate[] = 100 - array_sum($this->_rate);
}
/*
* 隨機生成一個1-10000的整數種子,提交給中獎判斷函數
* @return int,按傳入的概率排序,返回中獎的項數
*/
public function runOnce() {
return $this->judge(mt_rand(0, 10000));
}
/*
* 按所設置的概率,判斷一個傳入的隨機值是否中獎
* @param int,$seed 10000以內的隨機數
* @return int,$i 按傳入的概率排序,返回中獎的項數
*/
protected function judge($seed) {
foreach ($this->_rate as $key => $value) {
$tmpArr[$key + 1] = $value * 100;
}
//將概率乘十后累計,以便隨機選擇,組合成
$tmpArr[0] = 0;
foreach ($tmpArr as $key => $value) {
if ($key > 0) {
$tmpArr[$key] += $tmpArr[$key - 1];
}
}
for ($i = 1; $i < count($tmpArr); $i++) {
if ($tmpArr[$i - 1] < $seed && $seed <= $tmpArr[$i]) {
return $i; //返回中獎的項數(按概率的設置順序)
}
}
}
}
$rate = array(33, 20, 2, 0.95, 12, 4.55);
$a = new Lottery;
$a->setRate($rate);
for ($i = 0; $i <= 10000; $i++) {
$b = $a->runOnce();
@$rewards[$b]++;
}
unset($rewards['']);
echo array_sum($rewards);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
</head>
<body>
<table>
<thead>運行10000次,對比設置概率和中獎次數</thead>
<tr><th>設置概率</th><th>中獎次數</th></tr>
<tr><td><?php echo $rate[0]; ?>%</td><td><?php echo $rewards[1] ?></td></tr>
<tr><td><?php echo $rate[1]; ?>%</td><td><?php echo $rewards[2] ?></td></tr>
<tr><td><?php echo $rate[2]; ?>%</td><td><?php echo $rewards[3] ?></td></tr>
<tr><td><?php echo $rate[3]; ?>%</td><td><?php echo $rewards[4] ?></td></tr>
<tr><td><?php echo $rate[4]; ?>%</td><td><?php echo $rewards[5] ?></td></tr>
<tr><td><?php echo $rate[5]; ?>%</td><td><?php echo $rewards[6] ?></td></tr>
<tr><td><?php echo 'miss'; ?></td><td><?php echo $rewards[7] ?></td></tr>
</table>
</body>
</html>

PS:這里再為大家提供兩款功能類似的在線工具供大家參考:

在線隨機數字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

高強度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php字符串(string)用法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《php排序算法總結》、《PHP常用遍歷算法與技巧總結》、《PHP數學運算技巧總結》、《PHP數組(Array)操作技巧大全》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

自定義表單標簽: 適用范圍:全站任意地方均可使用 標簽作用:用于用戶提交表單和調取表單記錄 1、使用步驟 1)到后臺擴展內容自定義表單中添加表單 2)對新增的表單添加字段
留言板標簽 適用范圍:全站任意地方均可使用 標簽作用:用于用戶提交留言和調取留言記錄 1、留言提交表單 form action={pboot:msgaction} method=post 聯系人:input type=text name=contacts 手機:i
這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
主站蜘蛛池模板: 一区二区中文 | 在线一区观看 | 欧美舔穴 | 91新视频 | 久久精品com| 亚洲成人在线免费 | 亚洲国产成人精品女人久久久 | 亚洲国产黄| 天天想天天干 | 免费a在线 | 欧美成人一区二区三区片免费 | 日韩一级免费 | 国产精品一区二区av | 亚洲国产精品久久久 | 国产一区二区影院 | 免费三级av | 五月天国产在线 | av大片在线观看 | 鲁大师一区影视 | 一区二区视频在线 | 99精品国产一区二区三区 | 亚洲一区中文字幕 | re久久| 日韩久久久久久 | 亚洲一区二区三区视频在线 | 黄色男女网站 | 在线播放国产一区二区三区 | 涩涩导航| 国产精品爱久久久久久久 | 日韩国产精品一区二区三区 | 毛片免费在线 | 呦呦在线视频 | 日日做夜夜爽毛片麻豆 | 激情六月丁香婷婷 | 久久久999免费视频 999久久久久久久久6666 | 久久久精品网站 | 欧美日韩国产三级 | 久久久久久av | 国产精品久久久久av | 精品欧美乱码久久久久久 | 国产电影一区二区三区爱妃记 |