PHP权重算法-用于游戏根据权限来随机物品

转载 2015年07月09日 17:06:00

假设有数据:

 

复制代码
$data = array(

array(‘id’ => 1, ‘name’ => ‘张三’, ‘weight’ => 5),
array(‘id’ => 2, ‘name’ => ‘王五’, ‘weight’ => 10),
array(‘id’ => 3, ‘name’ => ‘李四’, ‘weight’ => 15),

);
复制代码

 

要随机取出其中一条,并且不是完全随机,而是根据其中weight的数值,按照数值越大,几率越高的规律取出。

以前写过一些权重算法,可是都不完美,要么数据量有限制,要么weight之和必须等于一个指定的数等等,都不完善。

今天突发奇想,写了一套完美的权重算法,该算法有如下优势:

1.支持无限多个数据
2.weight值之和任意
3.不存在两个weight值一样时无法平均分配的bug


算法如下:

复制代码
 1 $weight = 0;
 2 $tempdata = array();
 3 foreach ($data as $one) {
 4 
 5 $weight += $one['weight'];
 6 
 7 for ($i = 0$i < $one['weight']; $i ++) {
 8 $tempdata[] = $one;
 9 
10 }
11 
12 }
13 $use = rand(0, $weight – 1);
14 $one = $tempdata[$use];
15 
复制代码

 

 

最终得到的$one,就是源数据数组中按照权重分配,随机得到的数据。

PHP权重算法-用于游戏根据权限来随机物品

假设有数据:   $data = array( array(‘id’ => 1, ‘name’ => ‘张三’, ‘weight’ => 5), array(‘id’ =>...
  • ybhjx
  • ybhjx
  • 2016年01月08日 17:22
  • 1048

C# 带权重的随机 与 不带权重的随机

带权重的随机: /// /// 带权重的随机 /// /// 原始列表 /// 随机抽取条数 /// public static List GetRandomList(List l...
  • puremilk684
  • puremilk684
  • 2016年05月21日 20:28
  • 1865

带权重的随机算法

想给用户赠送随机额度的优惠券?大额度的几率低,小额度的几率高?试试这个算法!...
  • BuquTianya
  • BuquTianya
  • 2016年04月03日 19:42
  • 5087

带权重的随机算法

在软件开发过程中,尤其是APP或者或者游戏中,经常会涉及到这样一种问题:为了刺激用户消费,需要设置一种抽奖功能,用户点击抽奖按钮,会随机获取其中一种奖励,但是问题来了,不能让一等奖太容易抽到,那样的话...
  • u013152587
  • u013152587
  • 2016年10月04日 14:26
  • 3667

\t\tC# 权重控制随机抽取率

增加、减少随机抽中几率——此算法可用于题库随机抽题、赌博机控制出彩率,甚至俄罗斯方块等游戏,有广泛的用途!也希望能帮得到你! 强调     在随机的基础上增控制抽中几率,注意随机性!! 正文     ...
  • yandavid
  • yandavid
  • 2013年06月09日 15:31
  • 757

C# 权重控制随机抽取率

增加、减少随机抽中几率——此算法可用于题库随机抽题、赌博机控制出彩率,甚至俄罗斯方块等游戏,有广泛的用途!也希望能帮得到你! 强调      在随机的基础上增控制抽中几率,注意随机性!! ...
  • ArmyFai
  • ArmyFai
  • 2013年01月14日 15:48
  • 951

关于随机数权重的实现

一、问题定义: 问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数?? 例如: 如                    权重: 8  2  11  79   ...
  • ajian005
  • ajian005
  • 2014年02月16日 22:40
  • 4670

java 权重随机数算法

java 权重随机数 算法
  • qq_41399429
  • qq_41399429
  • 2017年12月15日 12:56
  • 130

java随机数且按权重、比例生成

以下两个测试类,即两种实现思路。均由公司同事提供,本人记录分享给大家。 具体实现思路请看代码。。。。。 测试类一: public class WGRandom { /** * ...
  • gongmf
  • gongmf
  • 2016年05月25日 11:51
  • 3001

游戏中几种概率设计

游戏中常见的4种概率设计 1、常规做法,直接配置概率,程序直接判定 2、在1的基础上,加个保底次数,当连续不发生的次数高于保底时,强制发生 3、设置基础概率,事件不发生概率翻倍 4、设置数组,将事件发...
  • poxiao8
  • poxiao8
  • 2016年12月08日 18:01
  • 1062
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP权重算法-用于游戏根据权限来随机物品
举报原因:
原因补充:

(最多只允许输入30个字)