1

可能重复:
访问列表中的随机项目

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

4

3 回答 3

6

查看此链接以在 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);
于 2013-01-29T20:49:26.807 回答
5

当然,很容易:

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];

此外,下次您应该包含不起作用的代码以及(可能的)原因。

于 2013-01-29T20:30:10.823 回答
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();
    }
  }
}
于 2013-01-29T20:37:33.700 回答