gpt4 book ai didi

PHP:如何随机选择最大概率值?

转载 作者:行者123 更新时间:2023-12-03 18:44:15 25 4
gpt4 key购买 nike

我有以下数组和代码

    $a = [
149 => 55,
130 => 10,
131 => 5,
132 => 5,
133 => 10,
134 => 10,
135 => 5
];

$rand = rand (0,(count($a)-1));

echo array_values($a)[$rand];

这将给出主要结果为 5,10而不是 55 .

值的总和是 100% 的概率。值可以是十进制的,也可以是 55.55、10.10 等,但总体来说是 100%

我已经关注了 https://www.geeksforgeeks.org/how-to-get-random-value-out-of-an-array-in-php/

但这并没有像预期的那样给出完美的结果。

所以应该主要随机选择概率最高的那个。

所以结果可以是这样的:55、55、10、10、10、55、5等。

我找到了一些有用的链接 Generating random results by weight in PHP?其中概率 = 权重

最佳答案

现在,你的数组是这样的:-

55, 10, 5, 5, 10, 10, 5

现在,您应该在 [0, 100) 之间生成一个随机数,我们称之为 r .
  • 现在,如果 r位于 [0, 55) 之间,选择值 55。
  • 否则如果 r位于 [55, 55 + 10 = 65) 之间,选择值 10。
  • 否则如果 r位于 [65, 65 + 5 = 70) 之间,选择值 5。
  • 否则如果 r位于 [70, 70 + 5 = 75) 之间,选择值 5。
  • 否则如果 r位于 [75, 75 + 10 = 85) 之间,选择值 10。
  • 否则如果 r位于 [85, 85 + 10 = 95) 之间,选择值 10。
  • 否则如果 r位于 [95, 95 + 5 = 100) 之间,选择值 5。

  • 我相信你会有这个想法......

    因此,对于一般情况,如果您有一个名为“arr”的数组,则这是伪代码:-
    function SELECTPROB()
    {
    $r = generateRandomNumber(0, 100); //function to generate random number between 0 and 100, (100 exclusive)
    $sum = 0;
    foreach($arr as $i)
    {
    if($r >= $sum && $r < $sum + $i)
    {
    return $i
    }
    $sum = $sum + $i
    }
    return -1 //Should technically never reach upto this, but it can if your probability's sum is not 100
    }

    关于PHP:如何随机选择最大概率值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60737591/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com