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

数组类似下面

array(

    0 => 50,

    1 => 60,

    2 => 70,

)

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

弑天下
浏览 575回答 1
1回答

慕的地10843

&nbsp; &nbsp;&nbsp;按照你的想法,应该是这样吧,你看是否符合你的要求<?php$arr = array(20,30,50);$res = getRand($arr);var_dump($res);function getRand($arr) {&nbsp; &nbsp; $result = '';&nbsp; &nbsp; //概率数组的总概率精度&nbsp; &nbsp; $Sum = array_sum($arr);&nbsp; &nbsp; //概率数组循环&nbsp; &nbsp; foreach ($arr as $key => $val) {&nbsp; &nbsp; &nbsp; &nbsp; $randNum = mt_rand(1, $Sum); //抽取随机数&nbsp; &nbsp; &nbsp; &nbsp; if ($randNum <= $val) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $result = $key;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //得出结果&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Sum -= $val;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; unset ($arr);&nbsp; &nbsp; return $result;}&nbsp; &nbsp; &nbsp; &nbsp; return $result;&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript