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

如何使用IndexOf方法解决C#幸运抽奖程序中随机数字重复的问题?

解决幸运抽奖程序的重复随机数问题

嘿,我来帮你搞定这个重复数字的问题!首先先提个小细节:你的代码里用了num[x],但数组明明叫luckyNumbers,这会导致编译错误,得先把变量名统一过来~

接下来咱们用Array.IndexOf()方法来检查重复,思路很简单:每次生成新的随机数后,先看看这个数已经在数组里存在了没,如果不存在就保留,要是存在就重新生成一个。

修改后的完整代码如下:

using System;
namespace LuckyDip
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] luckyNumbers = new int[6];
            Random random = new Random();
            
            for (int x = 0; x < 6; x++)
            {
                int newNum = random.Next(1, 60); // 注意Next是左闭右开,写60才能包含59
                
                // 检查新生成的数字是否已存在于数组中
                while (Array.IndexOf(luckyNumbers, newNum) != -1)
                {
                    // 如果存在,就重新生成新数字
                    newNum = random.Next(1, 60);
                }
                
                luckyNumbers[x] = newNum;
                Console.WriteLine(luckyNumbers[x]);
            }
            
            Console.ReadLine();
        }
    }
}

关键逻辑说明:

  • Random.Next(1, 60):这个方法是左闭右开区间,所以第二个参数填60才能让生成的数覆盖1到59的范围。
  • Array.IndexOf(luckyNumbers, newNum):它会在数组中查找指定元素,找到就返回对应索引,找不到则返回-1。我们用这个返回值判断数字是否重复。
  • 循环校验:如果生成的数字已经存在,就一直重新生成,直到拿到一个不重复的数再存入数组。

这样修改后,你的程序就不会再出现重复的幸运数啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:07:50