【发布时间】:2013-01-13 12:50:35
【问题描述】:
我想从字符串列表中随机生成一个元素,但是我不知道如何实现这一点。我有 4 个元素:aaa、bbb、ccc、ddd。我想生成其中一个随机绘制在屏幕上,我搜索了一段 C# 代码,但它不起作用。有人知道怎么做吗?
【问题讨论】:
我想从字符串列表中随机生成一个元素,但是我不知道如何实现这一点。我有 4 个元素:aaa、bbb、ccc、ddd。我想生成其中一个随机绘制在屏幕上,我搜索了一段 C# 代码,但它不起作用。有人知道怎么做吗?
【问题讨论】:
当然,很简单:
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];
另外,下一次您应该包含不起作用的代码以及(可能的)原因。
【讨论】:
Count() 在您不确切知道要处理的集合类型时很有用。 ILists 和 Arrays 都知道它们拥有多少物品,因此分别调用 Count 或 Length 属性非常便宜。例如,当你有一个 IEnumerable 时,你不知道它是什么类型的集合,所以你必须使用 Count() 扩展方法,它遍历集合以计算项目(非常慢)。
我不确定这是否是您需要的,但为什么不创建一个随机整数,然后使用 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();
}
}
}
【讨论】:
查看此链接以在 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);
【讨论】: