首页 > 解决方案 > 如何对 35 个数字中的 7 个随机列表进行排序?

问题描述

我想创建一个乐透游戏并从 C# 中的 35 个数字中随机选择 7 个不同的数字。这就是我在代码中所做的,但我不明白如何按升序对数字进行排序。我所做的是从一个包含 35 个数字的列表中挑选出 7 个数字,现在我很困惑,所以我需要帮助,至少让我换一种思维方式。如果有人能帮我解决这个问题,我会很高兴。我意识到我把它的命名搞砸了。那就是(例如)我创建了一个列表(winningNumber),其中包含我想要排序的 7 个随机数之外的所有数字,但现在我需要帮助来整理我凌乱的想法。

这是代码。

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace Random_Lotto_Number_2021_05_28_SMART
 {
class Program
{
    static void Main(string[] args)
    {
        Random rndLottoNumber = new Random();
        List<int> winningNumber = new List<int>();

        for (int i = 1; i <= 35; i++)
            winningNumber.Add(i);

        for (int i = 0; i < 7; i++)
        {
            int drawnNumber = rndLottoNumber.Next(winningNumber.Count);
            //Console.ReadLine();
            Console.Write(winningNumber[drawnNumber] + ",");
            winningNumber.RemoveAt(drawnNumber);
        }
        Console.WriteLine($"\nThe list contains {winningNumber.Count}");

        foreach(int num in winningNumber)
        {
            Console.Write(num + ",");
        }

        Console.ReadLine();
    }
}
 }

标签: c#listsortingrandom

解决方案


您可以简单地将您的“幸运”抽奖号码添加到一个新列表中,然后对该列表进行排序,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
                
public class Program
{
    public static void Main()
    {
        Random rndLottoNumber = new Random();
        List<int> winningNumber = new List<int>();
        List<int> drawnNumberList = new List<int>();

        for (int i = 1; i <= 35; i++)
            winningNumber.Add(i);

        for (int i = 0; i < 7; i++)
        {
            int drawnNumber = rndLottoNumber.Next(winningNumber.Count);
            // Add numbers to list
            drawnNumberList.Add(winningNumber[drawnNumber]);
            //Console.ReadLine();
            Console.Write(winningNumber[drawnNumber] + ",");
            winningNumber.RemoveAt(drawnNumber);
        }

        Console.Write("\nThe list contains ");
        Console.WriteLine(winningNumber.Count);
    
        foreach(int num in winningNumber)
        {
            Console.Write(num + ",");
        }
        Console.WriteLine();
        // Sort the list
        drawnNumberList.Sort();
        foreach(int num in drawnNumberList)
        {
            Console.Write(num + ",");
        }
    }
}

帮助解决这些问题的一种方法是在一张老式纸上写下您正在尝试做的事情,写出流程图或伪代码。当我试图围绕一个编程问题整理我的想法时,我已经无数次使用过这个。


推荐阅读