专栏首页luxixingPHP随机概率计算函数

PHP随机概率计算函数

在游戏开发中,会经常碰到计算概率的场景 下面的代码就是一个最简单的根据给定概率计算出随机结果的实例

<?php
//a出现的概率是10%,b是20%,c是30%,d是40%
$pro = [
'a' =>10,
'b' =>20,
'c' =>30,
'd' =>40
];

function proRand($pro)
{
        $ret = '';
        $sum = array_sum($pro);
        foreach($pro as $k=>$v)
        {   
                $r = mt_rand(1, $sum);
                //echo $r . "\t" . $v . "\n";
                if($r <= $v) 
                {   
                        $ret = $k; 
                        break;
                }else{
                        $sum = max(0, $sum - $v);
                }   
        }   
        return $ret;
}
echo proRand($pro);

更复杂的可能会在概率之上加上权重。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一段PHP按照权重随机item的代码

    luxixing
  • 使用PHP的PDO_Mysql扩展有效避免sql注入

    首先,什么是sql注入? 用大白话说就是:当一个人在访问你的应用时,需要输入,他的输入是一些特殊的字符,你没有对输入进行过滤处理导致他的输入改变了你的sql语...

    luxixing
  • php.ini配置文件定位

    有时候,我们会遇到这种情况:不知道当前运行的php配置文件php.ini在什么位置 这个时候,使用如下命令

    luxixing
  • 移动Web开发(一)

    a.程序访问: ECMAScript(ES) 3 、 ES 5 、 ES hamony 、 Web IDL 、DOM 2\3 、Offline 、File ...

    从今若
  • 商城项目-取消过滤项

    cwl_java
  • 从Twitter的XSS漏洞构造出Twitter XSS Worm

    2018年年中,当时我发现了一个Twitter的存储型XSS漏洞,该漏洞位于Twitter的犄角旮旯之处,一般人很难发现。重点在于,后来我又发现,这个存储型XS...

    FB客服
  • 如何学好python web开发

    我在没有接触互联网这个行业的时候,就一直好奇网站是怎么构建的。我现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,不过兴趣终归还是要有的,...

    python学习教程
  • 本地图形化工具 RedisDesktopManager 登录腾讯云 Redis

    本文介绍了如何使用本地图形化工具登录腾讯云 redis :用户购买了腾讯云 redis 后,有在本地通过图形化工具登录管理 redis 的需求,可以通过一台有公...

    刘晓轶
  • Townscript票务平台的任意账户劫持

    本文讲述了印度票务平台Townscript缺乏速率限制,以及密码重置缺陷导致的任意账户劫持漏洞。速率限制(Rate Limiting)仍是大多数Web应用不太重...

    FB客服
  • Java反射之getGenericSuperclass()用法

    参考链接: https://blog.csdn.net/qq_26424655/article/details/71515741

    黑泽君

扫码关注云+社区

领取腾讯云代金券