gpt4 book ai didi

PHP:如何以相等的概率将值分配给变量?

转载 作者:可可西里 更新时间:2023-11-01 01:13:37 26 4
gpt4 key购买 nike

版主注意事项:这不是家庭作业。

我有以下示例:

$points = 10;
$a = 0;
$b = 0;
$c = 0;
$d = 0;

我想将点数随机分配给变量($a,$b,$c,$d),直到 $points 达到零。因此,运行某些函数/脚本后的预期随机输出应如下所示:

$points = 0;// Must be zero
$a = 3;
$b = 1;
$c = 0;
$d = 6;

我正在考虑做一个简单的解决方案,如下所示:

while($points > 0) {
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$a += $points_taken;

$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$b += $points_taken;

$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$c += $points_taken;

$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$d += $points_taken;
}

该函数有一个问题:$a 获得更多分数(或什至所有分数)的机会更高,因为它在列表中排在第一位,而 $d 获得更少分数(或没有分数)的机会更高all) 因为它在列表的最后。

问题:如何让所有变量均等分布?

注意:如果其中一个变量拿走了所有的点也没关系。

最佳答案

您可以使用从一个范围中随机选择一个变量,并使用可变变量分配给它。

$vars = range('a','d');
while ($points) {
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
${$vars[mt_rand(0, 3)]} += $points_taken;
}

关于PHP:如何以相等的概率将值分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46096823/

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