<?php /* *算法学习自百度.只是学习和记录 */ header("Content-type:text/html;charset=utf-8"); //1.设置奖项,id是奖项id,name是中奖名称,v是中奖概率 $arr = array( array('id' => 1, 'name' => '特等奖', 'v' => 1), array('id' => 2, 'name' => '一等奖', 'v' => 10), array('id' => 3, 'name' => '二等奖', 'v' => 10), array('id' => 4, 'name' => '三等奖', 'v' => 10), array('id' => 5, 'name' => '四等奖', 'v' => 20), array('id' => 6, 'name' => '未中奖', 'v' => 50) ); //2.计算改路综合并抽奖 function getrand($pro) { $result = array(); //循环奖项数组将原概率保存在新的数组 foreach ($pro as $key => $value) { $arr[$key] = $value['v']; } asort($arr); //计算概率总数 $prosum = array_sum($arr); //从刚才创建的概率数组循环 foreach ($arr as $key => $value) { $randNum = mt_rand(1, $prosum); //生成一个随机数(1-总概率) //当前用户生成的随机数小于或者等于就是中奖 if ($randNum <= $value) { $result = $pro[$key]; break; } //当前用户生成的随机数大于奖项的概率,这个奖项错过.同时从总的概率中去除本奖项的概率 else { $prosum -= $value; } } //返回中奖结果 return $result; } //测试执行 $res = getrand($arr); print_r($res); ?>
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
(1).config.php 配置文件<?php /** * RabbitMQ_Config */ $config = [ 'host' => ...
<?php $member = new class { public function getInfo() { ...
最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...
<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...