我需要创建一个具有 3 个属性的播放器:
public function initPlayer(){
$life = random_int(1, 100);
$attack = random_int(1, 100);
$lifeAttack = $life + $attack;
if($lifeAttack >= 100) {
$defense = 200 - $lifeAttack;
} else {
$defense = random_int(1, 100);
}
echo $life . '-' . $attack . '-' . $defense;
}
但只有当两个参数的总和等于或大于 100 时它才能正常工作。
如果生命+攻击+防御这三个值是1..100范围内的真实随机数,那么总数只有200,概率非常低。当计算第三个值时,它不再是随机的。
正确的解决方案是:必须一次又一次地确定这 3 个值,直到总数等于 200。
for($sum = 0;$sum !== 200;){
$life = random_int(1, 100);
$attack = random_int(1, 100);
$defense = random_int(1, 100);
$sum = $life + $attack + $defense;
}
var_dump($life,$attack,$defense,$life + $attack + $defense);
输出示例:
int(65) int(77) int(58) int(200)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句