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

C#向36长度数组插入去重随机数时出现IndexOutOfRangeException异常

错误原因

你触发索引越界异常的核心问题出在for循环的终止条件设置错误:

  • C#中长度为36的数组,合法下标范围是0 到 35,下标36已经超出了数组的可访问范围。
  • 你写的循环条件是r <= 36,循环变量r会从0一直跑到36,当r=36时执行Numbers[r] = nextValue就会触发越界异常。

修复方案

只需要把for循环的条件修改为r < 36即可,修复后的完整代码如下:

{
    Random rand = new Random();

    int[] Numbers = new int[36];
    
    for (int r = 0; r < 36; r++)
    {
        int nextValue;
        do
        {
            nextValue = rand.Next(1, 50);
        } while (Numbers.Contains(nextValue));

        Numbers[r] = nextValue;
    }

    return Numbers;
}

可选优化说明

当前你用Numbers.Contains(nextValue)做去重校验的逻辑是正确的,不过如果后续要生成更多随机数,可以考虑用HashSet存储已生成的值,校验重复的时间复杂度会更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:48:00