抽奖算法分析
2015-07-14 11:47
357 查看
**
* 算法分析:假设为有个容器A(a1,a2,a3......an),从A个中随机取出一个an,要求an小于规定v,那么每一取出一个的可能性是
* rate=v/100 中可能性,
* 设置命中率为0.5,0.5=v/100;v=50
* 同理:
* 1/20=v/100;v=5,
* @param array $proArr
*/
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;
}
* 算法分析:假设为有个容器A(a1,a2,a3......an),从A个中随机取出一个an,要求an小于规定v,那么每一取出一个的可能性是
* rate=v/100 中可能性,
* 设置命中率为0.5,0.5=v/100;v=50
* 同理:
* 1/20=v/100;v=5,
* @param array $proArr
*/
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;
}
相关文章推荐
- DATALIST正反向排序,带▲和▼提示的【转一】
- 螺旋数字的python实现
- Tomcat Can't load AMD 64-bit .dll on a IA 32
- 逍遥剑客
- phonegap(cordova) 入门 9----小知识点总结--iOS 状态栏的字体颜色都设置为白色
- 第一天markdown
- Eclipse---Android 软件开发之如何使用Eclipse Debug调试程序详解
- UVA 658 - It's not a Bug, it's a Feature!(dijkstra+优先队列)
- Protocol in Objective-C
- 【Babble】批量学习与增量学习、稳定性与可塑性矛盾的乱想
- LinkedHash
- Linux中iptables设置详细
- Win10 UWP开发中的重复性静态UI绘制小技巧 2
- jquery 的(function(){});表示什么
- asp.net mvc4 简单使用Autofac依赖注入小结
- idea快捷键
- bootstrap js插件篇——下拉菜单、滚动监测、选项卡
- IOS中的ViewController 的loadView、viewDidLoad、viewDidUnload
- 任天堂社长岩田聪去世
- [LeetCode] Path Sum