文档章节

PHP中奖概率算法

 代码猎人
发布于 2014/11/06 18:53
字数 177
阅读 61
收藏 0

--

//存放概率的数组 出现0的概率0.993 1的概率0.006 2的概率0.001
	$arr=Array(0.993,0.006,0.001);
	
	//计算概率中小数点位数最多的小数有多少位
	$maxLength = 0;
	
	foreach ($arr as $value) {
		$temp = explode ('.', $value);
		if (sizeof ($temp) > 1) {
			$decimal = end ($temp);
			$count = strlen ($decimal);
			if($count>$maxLength){
				$maxLength=$count;
			}
		}
	}
	
	//随机数的最大范围
	$max=1;
	for ($x=0; $x<$maxLength; $x++) {
		$max.="0";
	}
	
	//计算出各个概率的随机数范围,即生成的随机数属于哪个概率
	$baseArr=Array();
	for ($x=0; $x<count($arr); $x++) {
		
		if($x==0){
			$baseArr[$x]=$arr[$x]*$max;
		}
		else{
			$baseArr[$x]=$arr[$x]*$max+$baseArr[$x-1];
		}
		
	}

	for ($i=0; $i<10000; $i++) {
		//生成的随机数
		$r=mt_rand(1,$max);
		for ($x=0; $x<count($baseArr); $x++) {
			if($r<=$baseArr[$x]){
				echo $x."-";
				break;
			}
		}
	}


© 著作权归作者所有

上一篇: JS基础 之 对象
下一篇: php curl
粉丝 3
博文 25
码字总数 3581
作品 0
天津
程序员
私信 提问
php几个常用的概率算法(抽奖、广告首选)

做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度。同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad、iphon...

蜗牛奔跑
2015/07/22
0
0
php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

<?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果...

bengozhong
2015/08/21
0
0
请教一下刮刮卡中奖概率问题

php程序 :比如我预计参与人数是1000人,共有20个有奖,中奖是随机的,我的思路是弄一个数组1000个长度的数组$arr,980个0,表示未中奖,20个1表示中奖,我用shuffle 把数组打乱,然后在1-1000之间随...

hphper
2015/07/11
2.2K
11
AI学习笔记之——多臂老虎机(Multi-armed bandit)问题

上一篇文章简要介绍了一下强化学习,强化学习是一个非常庞大的体系,与监督学习和非监督学习相比,其广度和深度都大的多,涉及到很多经典的决策算法,对统计学知识尤其依赖。作为强化学习的基...

Hongtao洪滔
2018/07/27
0
0
if elseif else条件语句的计算量问题

我们经常用if elseif else这种条件语句去做分支处理,之前遇到这种语句时就有点困惑,哪种条件语句放前面,哪种放后面,不同顺序是否有计算量和效率上的不同?在计算量小的时候,其实分别是不...

vinci321
2017/10/23
0
3

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
13分钟前
1
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
4
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
9
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部