为了账号安全,请及时绑定邮箱和手机立即绑定

从一个一维数组中按照概率取出对应key

从一个一维数组中按照概率取出对应key

弑天下 2018-11-13 17:14:37
数组类似下面array(    0 => 50,    1 => 60,    2 => 70,)某个子项的value值 除以 (数组value值的总和) 为这个项的概率。求如何按照概率 取出其中“中”的key值
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

   


 按照你的想法,应该是这样吧,你看是否符合你的要求

<?php

$arr = array(20,30,50);

$res = getRand($arr);

var_dump($res);

function getRand($arr) {

    $result = '';

    //概率数组的总概率精度

    $Sum = array_sum($arr);

    //概率数组循环

    foreach ($arr as $key => $val) {

        $randNum = mt_rand(1, $Sum); //抽取随机数

        if ($randNum <= $val) {

            $result = $key;          //得出结果

            break;

        } else {

            $Sum -= $val;

        }

    }

    unset ($arr);

    return $result;

}

        return $result;

    }


查看完整回答
反对 回复 2018-12-06
  • 1 回答
  • 0 关注
  • 574 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号