从C#中的字符串数组中获取随机值的最快方法?

在.net 2.0框架中从C#中的字符串数组中获取随机值的最快方法是什么? 我想他们可能有这个:

string[] fileLines = File.ReadAllLines(filePath); fileLines.GetRandomValue(); 

是的,我知道GetRandomValue()不是一个实际的方法,是否有类似的东西或多或少同样短而甜?

不是内置的,但很容易添加…

 static readonly Random rand = new Random(); public static T GetRandomValue(T[] values) { lock(rand) { return values[rand.Next(values.Length)]; } } 

static字段有助于确保我们在紧密循环中使用它时不会重复,并且lock可以保护它不受多个调用者的影响)

在C#3.0中,这可能是一个扩展方法:

 public static T GetRandomValue(this T[] values) {...} 

然后你可以完全按照你的例子使用它:

 string[] fileLines = File.ReadAllLines(filePath); string val = fileLines.GetRandomValue(); 

确实。

 Random m = new Random(); string line = fileLines[m.Next(0, fileLines.Length); 

我不认为数组支持这样的function。 最简单的方法是获取一个随机数,并获得相应的项目。

 Random rnd = new Random(); String item = fileLines[rnd.next(fileLines.Length); 

尝试:

 fileLines [new Random ().Next (fileLines.Length)] 

Linq To Sql方式

 var rFile = fileLines.OrderBy(x => Guid.NewGuid()).FirstOrDefault(); 

如果看到错误,则应添加System.Linq;

我已经使用此方法从数组中获取随机项:

 string[] str = {"red","blue","pink","yellow","green","brown"}; int i = new Random.Next(0, str.length); MessageBox.Show(str[i]);