2025
PHP 实现支持权重的 array_rand 方法
PHP 字段的 array_rand 方法是从 array 中随机挑选一个并返回元素的 key。但是有时候 array 中的元素是有权重的,权重越大概率被随机到的概率也就越大。像 Python 就提供了一个 random.choices 的方法。网上搜到一个带权重的随机数生成,正好可以使用 PHP 来实现带权重的 array_find
,这里只实现一个基础版本,另外的想要随机多个元素的可以自己支持。
文章中重要的只有三点:
- 累加元素中的权重值,并从 1 到累加值中随机一个数字
- 遍历数组重点每个元素,使用第一步随机到的数字减去当前遍历元素的权重值
- 当值随机的值小于等于 0 时,就是随机元素的 key