• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 简单计算权重的方法(适合抽奖类的_php

php 搞代码 7年前 (2018-06-21) 159次浏览 已收录 0个评论

最近因项目需求需要做一个抽奖类的应用,用户点击抽奖,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖),很显然,这个奖值出现的概率要依次降低了。这就涉及到了一个类似权重计算的一个算法了。根据需求想了很久,也总算是通过一个简单的权重计算办法将这件事情搞定了,概率还是在预计范围之内的。

下面就将这个权重计算的方法概述下。

首先说明的是这个例子在这里仅适合二维数组且一维为数字索引的数组,数据数组结构如下:

 $data=array(  0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),  1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),  2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),  3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60') );

下面是简单计算权重的算法

 // 权重数值越高,被返回的概率越大 // author www.Alixixi.com function countWeight($data){  $weight=0;  $temp=array();  foreach($data as $v){   $weight+=$v['weight'];   for($i=0;$i<$v['weight'];$i++){    $temp[]=$v;//放大数组   }  }  $int=mt_rand(0,$weight-1);//获取一个随机数  $result=$temp[$int];  return $result; }

计算结果返回如下:

Array
(
    [id] => 4
    [name] => 谢谢抽奖
    [weight] => 60
)

http://www.gaodaima.com/50951.htmlphp 简单计算权重的方法(适合抽奖类的_php

欢迎大家阅读《php 简单计算权重的方法(适合抽奖类的_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 简单计算权重的方法(适合抽奖类的_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址