无法创建从25个不同字符串中选择10个唯一C#的代码

dea*_*e80 -3 c# random

我试图在C#中创建一个简单的数学程序我创建了一个按钮,文本框并将25个变量设置为字符串(句子,在本例中为问题).我希望程序在按下按钮并在文本框中显示字符串时选择10个没有重复的问题.

主要问题是无法让程序选择10个独特的字符串,感谢您的帮助

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Math_generator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Generate_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            HashSet<int> numbers = new HashSet<int>();
            while (numbers.Count < 6)
            {
                numbers.Add(random.Next(1, 49));
            }
            TestResults.Text = "Hey " + numbers.ToString();
        } 

        }




        //Random random = new Random();
        //int MultipleChoice = random.Next(1, 26);


        //int MultipleChoice2 = random.Next(1, 26);

        //if (MultipleChoice2 == MultipleChoice)
        //{

        //    MultipleChoice2 = random.Next(1, 26);
        //}


        //    int MultipleChoice3 = random.Next(1, 26);
        //    if (MultipleChoice3 == MultipleChoice || MultipleChoice3 == MultipleChoice2)
        //    {

        //        MultipleChoice3 = random.Next(1, 26);
        //    }


        //    int MultipleChoice4 = random.Next(1, 26);
        //    if (MultipleChoice4 == MultipleChoice || MultipleChoice4 == MultipleChoice2 || MultipleChoice4 == MultipleChoice3)
        //    {

        //    MultipleChoice4 = random.Next(1, 26);
        //     }


        //    int MultipleChoice5 = random.Next(1, 26);
        //    if (MultipleChoice5 == MultipleChoice || MultipleChoice5 == MultipleChoice2 || MultipleChoice5 == MultipleChoice3 || MultipleChoice5 == MultipleChoice4)
        //    {

        //        MultipleChoice5 = random.Next(1, 26);
        //    }

        //    int MultipleChoice6 = random.Next(1, 26);
        //    if (MultipleChoice6 == MultipleChoice || MultipleChoice6 == MultipleChoice2 || MultipleChoice6 == MultipleChoice3 || MultipleChoice6 == MultipleChoice4 || MultipleChoice6 == MultipleChoice5)
        //    {

        //        MultipleChoice6 = random.Next(1, 26);
        //    }

        //    int MultipleChoice7 = random.Next(1, 26);
        //    if (MultipleChoice7 == MultipleChoice || MultipleChoice7 == MultipleChoice2 || MultipleChoice7 == MultipleChoice3 || MultipleChoice7 == MultipleChoice4 || MultipleChoice7 == MultipleChoice5 || MultipleChoice7 == MultipleChoice6)
        //    {

        //        MultipleChoice7 = random.Next(1, 26);
        //    }

        //    int MultipleChoice8 = random.Next(1, 26);
        //    if (MultipleChoice8 == MultipleChoice || MultipleChoice8 == MultipleChoice2 || MultipleChoice8 == MultipleChoice3 || MultipleChoice8 == MultipleChoice4 || MultipleChoice8 == MultipleChoice5 || MultipleChoice8 == MultipleChoice6 || MultipleChoice8 == MultipleChoice7)
        //    {

        //        MultipleChoice8 = random.Next(1, 26);
        //    }

        //    int MultipleChoice9 = random.Next(1, 26);
        //    if (MultipleChoice9 == MultipleChoice || MultipleChoice9 == MultipleChoice2 || MultipleChoice9 == MultipleChoice3 || MultipleChoice9 == MultipleChoice4 || MultipleChoice9 == MultipleChoice5 || MultipleChoice9 == MultipleChoice6 || MultipleChoice9 == MultipleChoice7 || MultipleChoice9 == MultipleChoice8)
        //    {

        //        MultipleChoice9 = random.Next(1, 26);
        //    }

        //    int MultipleChoice10 = random.Next(1, 26);
        //if (MultipleChoice10 == MultipleChoice || MultipleChoice10 == MultipleChoice2 || MultipleChoice10 == MultipleChoice3 || MultipleChoice10 == MultipleChoice4 || MultipleChoice10 == MultipleChoice5 || MultipleChoice10 == MultipleChoice6 || MultipleChoice10 == MultipleChoice7 || MultipleChoice10 == MultipleChoice8 || MultipleChoice10 == MultipleChoice9)
        //    {

        //        MultipleChoice10 = random.Next(1, 26);
        //    }
        //TestResults.Text = "your numbers are: " + MultipleChoice + ", " + MultipleChoice2 + ", " + MultipleChoice3 + ", " + MultipleChoice4 + ", " + MultipleChoice5 + ", " + MultipleChoice6 + ", " + MultipleChoice7 + ", " + MultipleChoice8 + ", " + MultipleChoice9 + ", " + MultipleChoice10;



    }
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 5

你想要做的是你的25个字符串改组,然后取第10个字符串.你可以这样做:

var shuffled = myStrings.OrderBy(x => random.Next()).Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)

预防常见的错误答案:

有些人会告诉你按照新的指导顺序进行洗牌; 不要这样做.Guids保证唯一性,而不是随机性.

有些人会告诉你,编写十行代码来制作Fischer-Yates shuffle比编写一行代码要好,因为Fischer-Yates的效率更高,因为列表的大小增加到数百万或数十亿; 这是在努力解决你今天没有的问题,也不会有明天的问题.