`

PHP取权重

    博客分类:
  • PHP
 
阅读更多

在实际的开发过程中,经常会用到一些几率的时间,例如有这样一个奖励的数组:

ipad的几率是2%,金币的几率是80%,钻石币的几率是10%,经验值的几率是8%

要求写一个函数来计算你得到的是什么.

<?php
    
    $data = array(
        'iapd'  => 2,
        'coin'  => 80,
        'cash'  => 10,
        'xp'    => 8
    );

    $rs = get_weight_random($data);

    function get_weight_random($weight) {
        $point = 0;
        foreach ($weight as $value) {
            if ($value < 1) {
                $temp_value = explode('.', $value);
                $point = strlen(array_pop($temp_value));
            }
        }    
        $times = pow(10, $point);
        $weight_rand = mt_rand(1, array_sum($weight) * $times);
        asort($weight);
        $base = 0;
        foreach ($weight as $key => $value) {
            $min = $base * $times + 1;
            $max = ($base + $value) * $times;
            if ($weight_rand >= $min && $weight_rand <= $max) {
                break;
            } else {
                $base += $value;
            }
        }

        return $key;
    }
 

 

分享到:
评论

相关推荐

    PHP实现的权重算法示例【可用于游戏根据权限来随机物品】

    本文实例讲述了PHP实现的权重算法。分享给大家供大家参考,具体如下: 假设有数据: $data = array ( array ( 'id' =&gt; 1, 'name' =&gt; '张三', 'weight' =&gt; 5 ), array ( 'id' =&gt; 2, 'name' =&gt; '王五', '...

    百度网站权重(SEO)查询工具PHP版

    本压缩包提供的"百度网站权重查询工具PHP版"就是一个这样的应用,它能够快速获取并分析特定关键词在百度搜索中的权重数据。 **实现原理** 该工具可能基于以下原理工作: 1. **API调用**:可能通过调用百度或其他第...

    百度全自动推送文章收录PHP代码附带教程

    值得注意的是,虽然自动推送可以加快收录,但并不保证所有推送的内容都会被百度立即收录,这还取决于内容质量、网站权重等多种因素。因此,持续提供高质量的内容和保持良好的网站结构同样重要。 总的来说,这个...

    PHP标签云代码及demo

    这可以通过PHP的`asort()`、`arsort()`或`usort()`函数来实现,具体取决于我们希望高权重的标签出现在前面还是后面。 4. HTML渲染:根据权重生成不同大小的标签。可以使用CSS样式来控制字体大小,将权重与字体大小...

    PHP实现负载均衡的加权轮询方法分析

    在`getUsers`方法中,根据用户队列中的用户数量和时间间隔来决定取用户id的方式,保证在用户量较少时也能尽可能平均地分配负载。 在代码实现中,当用户队列中的用户数量达到一定数量时,根据服务器的权重占比从队列...

    PHP实现负载均衡的加权轮询

    // 每次取 100 人 const num = 100; // 上次取值时间,秒级时间戳 public $last_time; // 权重 machine=&gt;weight public $machines = array( 'a' =&gt; 3, // 0.6 'b' =&gt; 1, // 0.2 'c' =&gt; 1 // 0.2 ); // ...

    基于PHP实现pagerank算法.zip

    其中,\( PR(A) \) 是网页A的PageRank值,\( d \) 是阻尼因子,通常取0.85,\( PR(i) \) 是链接到A的所有网页的PageRank值,\( L(i) \) 是链接到网页i的总数。 4. **停止条件**:当PageRank值在连续几轮迭代后变化...

    php中通过数组进行高效随机抽取指定条记录的算法

    在PHP中实现这样的算法通常涉及到对元素的权重进行计算,然后再根据权重分布进行随机选择。 总的来说,`array_rand()` 函数是PHP处理数组时的一个强大工具,尤其在需要进行随机抽取操作时。结合其他编程技巧和算法...

    建站PHP、ASP、SEO

    两者各有优缺点,选择哪种语言取决于项目需求、开发团队技能和服务器环境。 SEO(Search Engine Optimization)是搜索引擎优化的缩写,旨在通过优化网站内容、结构和技术,提高网站在搜索引擎结果页的排名,从而...

    php短网址和数字之间相互转换的方法

    具体来说,生成短网址时是不断地取余数(模54)然后累加到短网址字符串前面,并且每次循环都要除以54并减1。而在将短网址转换回数字时,则是根据每个字符在映射字符串中的位置,乘以其对应的54进制权重(pow(54,$i)...

    使用字符串函数输出整数化的PHP版本号

    对于其他常见的PHP整数操作,如取整、转换小数为整数、取余数等,PHP提供了多种函数,如 `round()`, `floor()`, `ceil()` 和 `abs()`。在处理整数数据类型时,了解这些函数的用法是十分必要的。 在实际开发中,特别...

    php实现信用卡校验位算法THE LUHN MOD-10示例

    - 将前面得到的总和除以10取余数,如果余数为0,那么原始输入的信用卡号被认为是有效的;反之,可能存在输入错误或者卡片无效。 PHP代码实现如下: ```php function check_card($card) { // 验证输入是否为数字 ...

    在php中设置session用memcache来存储的方法总结

    首先,要启用Memcache或Memcached作为session存储,需要设置`session.save_handler`为`memcache`或`memcached`,具体取决于你安装的是哪个扩展。此外,还需要设置`session.save_path`来指定连接到的Memcache服务器...

    PHP校验ISBN码的函数代码

    加权计算的规则是将前12位数字分别乘以特定的系数(分别为1、3交替),然后求得的和对10取余数,余数再用10减去得到的差值,该差值即为校验码。如果差值是10,则校验码用数字“0”表示;如果是11,则用字母“X”表示...

    php验证身份证

    从给定的PHP代码片段来看,它主要包含了四个功能函数:`get_xingzuo`、`get_shengxiao`、`get_xingbie` 和 `isIdCard`,分别用于从身份证号码中获取星座、生肖、性别以及验证身份证号码的有效性。下面将详细解析这些...

    【联网制作】周公解梦大全 v2.3

    网站的权重往往取决于其他高质量网站对其的引用或链接,权重高的网站可以传递其一部分权重给链接的网站。周公解梦大全 v2.3 可能包含了一些策略,如内链优化、外链建设等,以增加网站的权重,从而提高在搜索结果中的...

    seo常用术语-301重定向.docx

    实现301重定向的方法多种多样,具体取决于你的网站所使用的服务器平台和技术。以下是常见的几种实现方式: 1. **ASP程序**:可以在index.asp文件头部添加VBScript代码,设置Response.Status为301 Moved Permanently...

    php 自写函数代码 获取关键字 去超链接

    提取的关键词将按照权重排序。 **实现代码**: ```php function getkey($contents) { // 移除HTML标签 $rows = strip_tags($contents); // 定义需要替换的字符串数组 $arr = array(', '&gt;', "\s", "\r\n", "\n...

    站长工具源码 v2.0 PHP版.rar

    )20 、PR值查询(PR值全称为PageRank(网页级别),取自Google的创始人LarryPage。它是Google排名运算法则(排名公式)的一部分,是Google用于用来标识网页的等级/重要性的一种方法,是Google用来衡量一个网站的好坏...

    LSBBMS

    在二进制系统中,每个元素只能取0或1两个值,这在编码、信息传输、数据压缩等方面有特殊意义。例如,在机器学习中的逻辑回归或支持向量机模型,二进制数据可以用来表示类别标签或特征。通过最小二乘法,我们可以找到...

Global site tag (gtag.js) - Google Analytics