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

C#如何从100开始逐次减1-10随机数直到0并输出每次结果

问题原因分析
  • 循环选择错误:for循环自带的i--固定步进属于要求禁用的固定递减逻辑,且代码中额外又加了一次i--,导致数值递减逻辑完全不符合随机减法的要求
  • Random实例化位置错误:将new Random()写在循环内部时,由于Random默认以系统时间戳作为种子,短时间连续实例化会生成大量重复随机数,需要移到循环外部
  • 随机数范围错误:Random.Next(minValue, maxValue)的maxValue是开区间,你写的ran.Next(1, 10)只会生成19的整数,要得到110的取值需要改为ran.Next(1, 11)
  • 终止逻辑错误:原代码没有处理最后一次减法可能直接降到负数的情况,也没有正确的循环终止判断逻辑
修复后的代码
// 随机数实例全局仅实例化一次即可
Random ran = new Random();
// 初始化初始值为100
int currentValue = 100;
// 只要当前值大于0就继续执行随机减法
while (currentValue > 0)
{
    // 生成1~10的随机数
    int randomNum = ran.Next(1, 11);
    currentValue -= randomNum;
    // 确保输出结果不低于0,降到0即停止
    currentValue = Math.Max(currentValue, 0);
    Console.WriteLine(currentValue);
}
代码说明
  • 改用while循环,不存在任何固定递减逻辑,所有数值变化完全由生成的随机数决定
  • Random实例放在循环外,避免生成重复随机数
  • 随机数范围调整为1~10,完全匹配需求
  • 用Math.Max(currentValue, 0)保证最后一次减法如果减到负数也会修正为0,符合降到0为止的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:36:07