如何在c#

时间:2017-09-15 16:31:38

标签: c# random

大家好我正在创建一个名为Quiz游戏的程序。现在我的问题是如何生成不重复的问题?我的所有问题都存储在switch语句中。我已经尝试并搜索了所有可能的解决方案,但仍然得到相同的输出。我的下面的代码只是一个例子我没有粘贴它所有bcoz太长时间。每当我调用方法Question()时,它都是随机的,但有时问题已经被问到了。

    public void Question()
    {

     var random = new Random((int)DateTime.Now.Ticks);
        var randomValue = random.Next(1, 8);
        switch (randomValue)
        {
            case 1:
     ans = 1;

                    btnA.Visible = true;
                    btnB.Visible = true;
                    btnC.Visible = true;
                    btnD.Visible = true;
                    btn50.Enabled = true;
                    btndoubledip.Enabled = true;

                    lblQuestion.Text = "1+1=?";
                    voice = new SpeechSynthesizer();
                    voice.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Child);
                    voice.SpeakAsync(lblQuestion.Text.ToString());

                    btnA.Text = "2";
                    btnB.Text = "1";
                    btnC.Text = "4";
                    btnD.Text = "5";


                }
                break;

1 个答案:

答案 0 :(得分:1)

使用Randomize a List<T>随机播放列表。所以:

private static Random rng = new Random(); 
public static void Shuffle<T>(this IList<T> list) 
{ 
    int n = list.Count; 
    while (n > 1)
    {
          n--;
          int k = rng.Next(n + 1);
          T value = list[k]; 
          list[k] = list[n]; 
          list[n] = value; 
     } 
}

然后只需将问题列表随机播放并从头到尾显示它们。

List<Question> questions = new List<Question>()
{
    question1, 
    question2, 
    question3
    //... 
}
questions.Shuffle();
foreach (Question question in questions) question.Ask();