根据对应指定的权重随机分配对应的值【通用(各个语言自行实现即可)】
<?php
/**
* 权重随机工具类
* User: leyangjun
* Date: 2018/9/1
* Time: 上午10:37
*/
namespace Lyj\Lib;
class RandomTool
{
/**
* 根据全权重随机分配
* @param array $weight
* @demo randomByWeight(['le' => 1000, 'yang' => 200, 'jun' => 800])
* @return int|string
*/
public function randomByWeight($weight = array())
{
$randomVal = rand(1, array_sum($weight));
$tmpWeight = 0;
$randomNum = 0;
foreach ($weight as $k => $v) {
$min = $tmpWeight;
$tmpWeight += $v;
$max = $tmpWeight;
if ($randomVal > $min && $randomVal <= $max) {
$randomNum = $k;
break;
}
}
return $randomNum;
}
}
权重随机分配算法实现
这是一个PHP实现的权重随机分配工具类,由leyangjun编写。该类提供了一个名为`randomByWeight`的方法,用于根据给定的权重数组随机返回一个值。方法通过生成一个随机数并比较权重范围来实现分配。
6万+

被折叠的 条评论
为什么被折叠?



