<?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); ?>
开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...
(1).config.php 配置文件<?php /** * RabbitMQ_Config */ $config = [ 'host' => ...
有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...
当我们使用php爬虫采集网站时经常会遇到内容使用ajax异步加载。一般采取的方案是PHP模拟再请求api接口获取数据,但是有时候前端js加密非常麻烦,我们需要将js的加密方法转换为php方法方便curl请求。当然通过了解我们可以通过3种方案解决。第一种:使用phpv8js扩展执行js代码。(pecl...
本教程使用的定时任务基于EasyTak,EasyTask官方文档:https://gitee.com/392223903/EasyTask(1).安装tp5.0或者5.1composer create-project topthink/think=5.0.* tp5&n...
本文基于Laravel Framework 6.17.1版本(1).创建项目(依赖真多,如此臃肿)composer create-project --prefer-dist laravel/laravel blog(2).安装定时任务composer包&nbs...