创建 3 个随机 int 参数,总和为 100

瘦小胖子

我需要创建一个具有 3 个属性的播放器:

  • 寿命(必须是 1 到 100 之间的随机整数);
  • 攻击(必须是 1 到 100 之间的随机整数);
  • 防御(必须是从 1 到 100 的随机整数);但是所有属性的总和必须是200(生命+攻击+防御=200)。不多也不少。我试图做这样的事情:
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Java流使用3个唯一的随机数编写/创建int []的最短方法是什么?

绘制总和等于 100 的 n 个随机整数

如何在Excel中生成介于-100到100之间的n个随机数,总和为零?

循环并将 3 个不同的 numpy 数组乘以随机百分比,加起来为 100%

创建100个文件

用总和为常数(C)的N个随机数创建类似于Poisson的分布

如何创建三个总和为特定值的随机整数?(Python)

从数组到元素创建3个随机名称

如何创建 100 个文件

在1到100之间创建一个不会每次更改的随机数

如何在C中创建100个随机字符串的数组

Itertools.permutations为TSP创建n个随机解

为完整脚本创建一个随机名称

如何生成4个随机数,这4个数之和必须为100

如何使用脚本创建多个文件(100 个文件),每个文件可以包含 30 个随机字符

我可以创建一个用六个随机数填充 100 个数组的循环吗

AS3:创建一个将Array和Vector都接受为参数的函数

创建零的3D张量,在numpy / jax中的每个切片上随机放置一个正好为'1'的张量

从int php池创建随机数组

如何创建包含100个随机整数的一维数组并找到平均值,标准差和方差?

Openpyxl将100%读为'int'

为每100 int加1

创建<100个线程时Java`OutOfMemoryError`

将200个大小为(100 * 100)的2-d numpy数组堆叠在3-d numpy数组(200 * 100 * 100)中

为2个不同指标创建100%堆叠的条形图时出现问题

如何动态创建一个10到100的数组,值之间的间隔为10?

CSS:如何创建宽度为100%的<li>

创建一个回溯程序,返回所有 P 位数字,使得每 3 个连续数字的总和为 S

postgresql:postgresq 在 null 到 100 之间创建随机整数