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

1 c# random

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

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

use*_*322 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];
Run Code Online (Sandbox Code Playgroud)

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

  • `Count()` 当你不知道你正在处理什么样的集合时很有用。`ILists` 和 `Arrays` 都知道它们拥有多少项,因此分别调用 `Count` 或 `Length` 属性非常便宜。例如,当你有一个 `IEnumerable` 时,你不知道它是什么类型的集合,所以你必须使用 `Count()` 扩展方法,它遍历集合来计算项目(非常慢) . (2认同)

Gra*_*ray 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);
Run Code Online (Sandbox Code Playgroud)