如何从列表中获取随机元素?

时间:2013-01-29 20:24:56

标签: c# random

  

可能重复:
  Access random item in list

我想从字符串列表中随机生成一个元素,但是我不知道如何实现这一点。我有4个元素:aaa,bbb,ccc,ddd。我想生成其中一个随机绘制在屏幕上,我搜索一些C#的代码,但它不起作用。有谁知道怎么做?

3 个答案:

答案 0 :(得分:5)

查看此链接以在XNA中绘制文本:

http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Writing_text.php

拥有该部分后,您只需创建一个列表并选择要传递给spriteBatch.DrawString()的随机元素。这是一个快速未经测试的版本。你应该修改它以适合你的代码。

Random r = new Random();
string rand = list[r.Next(list.Count)];

spriteBatch.DrawString(spriteFont, rand, new Vector2(20, 45), Colors.Black);

答案 1 :(得分:4)

当然,很容易:

List<string> list = new List<string>() { "aaa", "bbb", "ccc", "ddd" };

int l = list.Count;

Random r = new Random();

int num = r.Next(l);

var randomStringFromList = list[num];

另外,下次您应该包含与(可能)原因无关的代码。

答案 2 :(得分:4)

我不确定这是否是您需要的,但为什么不创建一个随机整数然后使用string [int]来访问您的字符串数组。

namespace ConsoleApplication1
{
  using System;
  using System.Text;

  class Program
  {
    static void Main(string[] args)
    {
      Random random = new Random();
      string[] myStrings = new string[] { "aaa", "bbb", "ccc", "ddd" };

      for (int n = 0; n < 10; n++)
      {
        int rnd = random.Next(0, myStrings.Length);
        string s = myStrings[rnd];
        Console.WriteLine("-> {0}", s);
      }

      Console.ReadLine();
    }
  }
}