>php教程 >php手册 >按照 百分比,求概率 PHP

按照 百分比,求概率 PHP

WBOY
WBOY원래의
2016-06-06 20:07:201896검색

因为一次工程,需要用到按比例随机分配。我在百度能搜索:按照 百分比,求概率。结果都是一些比较混乱的代码。 找到一个看似能用的,大致看了一下,好像挺复杂的,仔细分析了一下代码,有很严重的Bug。 于是自己写一个了,拿出来分享一下吧,抛砖引玉

因为一次工程,需要用到按比例随机分配。我在百度能搜索:按照 百分比,求概率。结果都是一些比较混乱的代码。
找到一个看似能用的,大致看了一下,好像挺复杂的,仔细分析了一下代码,有很严重的Bug。

于是自己写一个了,拿出来分享一下吧,抛砖引玉啊。

php 版本的,当然 ,明白思路之后,别的语言的都很容易搞定。


假设 有四个选项:a 占 10%,b占20% ,C占30% , d 占 40% ,原理就是现获取随机数,然后找区间。
当然了,选项的数量可以任意。
目前默认是 总和是 100% 。如果需要别的数,修改 随机数的范围即可。
这个算法,比较简单,效率也还算高。

当然因为是 rand() ,所以产生的是伪随机数,不是真正意义上的随机,能凑合着用吧。

/*
* ---a------b------------c---------d
* 1----11---------30--------60---------100
* 百分比 概率选择
*/
$data = array(
    'a' => 10 ,
    'b' => 20 ,
    'c' => 30 ,
    'd' => 40
);
echo randomSelect( $data ); 
function randomSelect( &$array ){
    $datas = $array ;
    if( !is_array($datas) || count($datas) == 0 )
        return ;
    asort($datas); //按照大小排序
    $random = rand(1,100);
    $sum = 0 ;
    $flag = '';
    foreach($datas as $key => $data ){
        $sum += $data ;
        if( $random 
    <p class="copyright">
        原文地址:按照 百分比,求概率 PHP, 感谢原作者分享。
    </p>
    
    


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.