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

如何替换生成的随机数序列中重复的数字?

解决每行随机数序列去重复的问题

你的需求是让每行生成的6个1-48的随机数没有重复,比如把重复的41替换成其他不重复的数字。可以通过生成数字时检查已存在的数字,重复则重新生成的方式实现,修改后的代码如下:

using System;
using System.Linq; // 引入Linq简化重复检查

class Program
{
    static void Main()
    {
        Draw();
        Console.ReadKey();
    }

    static void Draw()
    {
        int choice;
        Random randomNum = new Random();
        int[] numbers = new int[6];
        
        Console.Write("enter line amount: ");
        choice = int.Parse(Console.ReadLine());
        
        for (int i = 0; i < choice; i++)
        {
            Console.Write("\n");
            Array.Clear(numbers, 0, numbers.Length); // 重置数组,避免上一行数据干扰
            
            for (int j = 0; j < numbers.Length; j++)
            {
                int newNum;
                do
                {
                    newNum = randomNum.Next(1, 49);
                    // 检查当前已生成的前j个数字是否重复
                } while (numbers.Take(j).Contains(newNum));
                
                numbers[j] = newNum;
                Console.Write("{0} ", numbers[j]);
            }
        }
    }
}

关键改动说明

  • 引入System.Linq命名空间,用Take(j).Contains(newNum)快速判断当前数字是否重复
  • 用do-while循环替代直接赋值,确保生成的数字在当前行内唯一
  • 每行生成前调用Array.Clear重置数组,避免上一行残留数据影响结果

如果不想依赖Linq,也可以用手动循环检查重复:

// 替换do-while内的判断逻辑
do
{
    newNum = randomNum.Next(1, 49);
    bool isDuplicate = false;
    for (int k = 0; k < j; k++)
    {
        if (numbers[k] == newNum)
        {
            isDuplicate = true;
            break;
        }
    }
} while (isDuplicate);

这样就能保证每行输出的6个随机数都是唯一的,不会出现重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:05:21