【问题标题】:Get random array key based on % in array data根据数组数据中的 % 获取随机数组键
【发布时间】:2021-07-02 07:18:33
【问题描述】:

所以我正在构建一个小脚本,它将“随机”选择一个数组键,但根据键值的权重,我的数组如下所示:

array:2 [
  1 => "10"
  2 => "20"
]

所以在这种情况下,密钥 1 将有 33.33% 的机会被选择,密钥 2 将有 66.66% 的机会被选择。我该怎么做呢?

【问题讨论】:

标签: php arrays math


【解决方案1】:

你可以做这样的事情,你可以使用一个中间数组,其中的键重复次数与它们的权重相对应,然后从这个中间数组中随机挑选一个项目。

$weighted = [1=>"10", 2=>"20"];

$intermediary = [];
foreach ($weighted as $key=>$weight) {
    $intermediary = array_merge($intermediary, array_fill(0, $weight, $key));
}

$item = $intermediary[array_rand($intermediary)];

【讨论】:

  • 您在第 1 行 20 之后忘记了 ' " '。并且您需要在 foreach 中将 2 $weighted 替换为 $intermediary。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2013-04-27
  • 2018-09-07
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多