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

查看:74
本文介绍了javascript - 从一个一维数组中按照概率取出对应key的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

数组类似下面

array(
    0 => 50,
    1 => 60,
    2 => 70,
)

某个子项的value值 除以 (数组value值的总和) 为这个项的概率。求如何按照概率 取出其中中的key值

解决方案

   

 按照你的想法,应该是这样吧,你看是否符合你的要求
<?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;
    }

这篇关于javascript - 从一个一维数组中按照概率取出对应key的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆