久久久久久久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針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
主站蜘蛛池模板: 日韩久久综合网 | 伊人久久精品 | 免费黄色特级片 | 午夜欧美 | 成人免费一区二区三区牛牛 | 99精品国产一区二区三区 | 久久国产视频一区 | 国产传媒视频在线观看 | 欧美精品电影一区 | 日韩在线欧美 | 97人澡人人添人人爽欧美 | 亚洲性爰| 久久天堂网| 国产日韩欧美激情 | 69xxx免费| 欧美激情精品久久久久久 | 我爱操 | 玖玖国产 | 日本一二三区高清 | 国产区精品在线观看 | 欧美在线观看一区二区 | 四虎影院免费在线 | 红色av社区 | 一级a毛片 | 国产精品免费一区二区三区 | 天堂亚洲| 久久久精| 成人精品在线观看 | 日韩中文字幕在线 | 国产精品一区二区久久 | 国产高清精品在线 | 欧美h版| a在线观看 | 国精品一区 | 国产精品不卡一区 | 成人动漫一区二区 | 国产男女视频网站 | 日本视频免费观看 | 91中文字幕在线观看 | 成年男女免费视频网站 | 91传媒在线观看 |