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

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

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

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

$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
)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 谢谢!
, 谢谢
, 谢谢了
, array
, 权重
, 概率
, name
, weight
, 谢谢。数据库
, php抽奖
, php抽奖刮刮卡
php翻牌抽奖
权重的简单计算方法、抽奖权重、抽奖 程序 权重、java权重抽奖、权重计算公式,以便于您获取更多的相关知识。

时间: 2024-11-03 21:38:51

php 简单计算权重的方法(适合抽奖类的应用)的相关文章

python根据出生年份简单计算生肖的方法_python

本文实例讲述了python根据出生年份简单计算生肖的方法.分享给大家供大家参考.具体分析如下: 这里使用python根据出生年份计算生肖,看了代码会发现原来这么简单 #计算生肖 def ChineseZodiac(year): return u'猴鸡狗猪鼠牛虎兔龙蛇马羊'[year%12] ChineseZodiac(1990) 希望本文所述对大家的Python程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进

php简单计算年龄的方法(周岁与虚岁)_php技巧

本文实例讲述了php简单计算年龄的方法.分享给大家供大家参考,具体如下: /** * $date是时间戳 * $type为1的时候是虚岁,2的时候是周岁 */ function getAgeByBirth($date,$type = 1){ $nowYear = date("Y",time()); $nowMonth = date("m",time()); $nowDay = date("d",time()); $birthYear = date

php简单计算页面加载时间的方法_php技巧

本文实例讲述了php简单计算页面加载时间的方法.分享给大家供大家参考.具体实现方法如下: 简单的把开始时间放在页面头部,结束时间放在页面尾部,计算页面加载时间 $start = time(); // put a long operation in here sleep(2); $diff = time() - $start; print "This page needed $diff seconds to load :-)"; // if you want a more exact v

层次分析法计算权重

权重在百科中是这样被定义,"权重是一个相对的概念,是针对某一指标而言.某一指标的权重就是指在整体评价中的相对的重要程度.表示在评价这个过程中,它是被评价对象的不同侧面的重要程度的定量来进行分配,对各评价因子在总体评价中的作用进行区别对待".这句话好像绕口令一样让人难以理解,实际上,在日常生活中充斥着各种各样的决策问题,权重这个概念无意识的被人们广泛使用着. 我们遇到的问题: "哪个问题严重程度相对比较高啊?" "这两个设计方案都挺好的,到底选哪个呢?&qu

python计算时间差的方法

  本文实例讲述了python计算时间差的方法.分享给大家供大家参考.具体分析如下: 1.问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2.解决方法: 标准模块datetime和第三方包dateutil(特别是dateutil的rrule.count方法)能非常简单迅速的帮你解决这个问题. ? 1 2 3 4 5 from dateutil import rrule import datetime def weeks_between(start_date, e

Word 2007表格简单计算和数字格式转换

在Word 2007中,我们可以很轻松地对表格中的数据进行一些简单计算,并把数据转换成我们所需要的格式. 一.数据计算 以图1所示表格为例,我们需要计算每个人的总和以及每季度的平均数. 首先将鼠标定位于第二行第六列交叉处(即F2单元格),此时在功能区会新增加"表格工具"工具栏,在其下方新增"设计"和"布局"选项卡.点击"布局"选项卡"数据"功能组中"公式"按钮,如图2所示. 在打开的&q

word2003简单制作电子公章方法介绍

  电子公章经常要用到,制作公章的软件非常多,常用的有PS.Coreldraw.Ai.Word等,其实制作公章最方便还是word.本例教你如何用用Word2003制作电子公章的方法,简单实用. 方法/步骤 打开word2003,"插入→图片→自选图形" 在"绘图"工具栏中选择椭圆,按下Sfift键在文档中拖出一个圆 双击图形设置为"无填充色",线条宽度为2磅,颜色为红色,"叠放次序"为"最底层". 点击&q

python实现简单温度转换的方法_python

本文实例讲述了python实现简单温度转换的方法.分享给大家供大家参考.具体分析如下: 这是一段简单的python代码,用户转换不同单位的温度,适合初学者参考 复制代码 代码如下: def c2f(t):     return (t*9/5.0)+32 def c2k(t):     return t+273.15 def f2c(t):     return (t-32)*5.0/9 def f2k(t):     return (t+459.67)*5.0/9 def k2c(t):    

PHP简单操作MongoDB的方法(安装及增删改查)_php技巧

本文实例讲述了PHP简单操作MongoDB的方法.分享给大家供大家参考,具体如下: php操作MongoDB的话首先从网上下载MongoDB的扩展包,https://github.com/mongodb/mongo-php-driver/downloads,选择对应的扩展包. 这是我下的,然后解压,VC6适合apache,VC9适合IIS,ts(thread safe)指PHP以模块形式运行的. 然后把其中的php_mongo.dll放在PHP中的ext文件夹中,然后在PHP.INI里面加入ex