<?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); ?>
最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...
php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int { &nb...
posix_ttyname - 获取当前终端设备名称。<?php var_dump( posix_ttyname(STDOUT) );我们启动一个终端,执行上面的代码输出:/dev/tty1我们再启动一个终端,执行上面的代码输...
自己的composer已经发布到packagist,但是无法使用composer require easy-task/easy-task来安装,只能在配置文件使用如下方式安装:"require": { "easy...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...
断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围例如1个文本文件的字节为1000,第一次请求Range: bytes=0-500第二次请求Range: bytes=501-1000通过每次的请求将返回的流追加写入到文件。注意的项目:断点下载服务器端的每次只返回字节传输的...