You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成3个取值1-100、总和为200的随机整数以初始化玩家属性

解决方案

原代码问题

  • 当生命值与攻击力之和小于100时,防御力取1~100随机值,最终三个属性总和必然小于200,不满足要求
  • 未对防御力的取值范围做约束,存在超出1~100区间的风险

实现逻辑

要同时满足三个属性均为1~100的整数、总和为200的要求,只需约束前两个属性的随机范围,第三属性直接计算即可:

  1. 先随机生成1~100之间的生命值
  2. 推导攻击力的合法取值区间:要保证最终计算出的防御力也在1~100之间,攻击力的下限为max(1, 100 - 生命值),上限为min(100, 199 - 生命值)
  3. 在合法区间内随机生成攻击力
  4. 直接用200减去生命值和攻击力得到防御力,自动满足数值范围和总和要求

修复后代码

public function initPlayer(){
    // 随机生成生命值:1~100
    $life = random_int(1, 100);
    // 计算攻击力的合法取值范围
    $attackMin = max(1, 100 - $life);
    $attackMax = min(100, 199 - $life);
    // 在合法范围内随机生成攻击力
    $attack = random_int($attackMin, $attackMax);
    // 计算防御力,自动满足1~100且总和为200
    $defense = 200 - $life - $attack;
    echo $life . '-' . $attack . '-' . $defense;
}

内容的提问来源于stack exchange,提问作者SlimBoy Fat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:54:03