在 .net 2.0 框架下,从字符串数组中获取随机值的最快方法是什么?我想他们可能已经有了这个:
string[] fileLines = File.ReadAllLines(filePath);
fileLines.GetRandomValue();
是的,我知道GetRandomValue()不是一个真正的方法,有没有类似的东西更加简短而甜美?
在 .net 2.0 框架下,从字符串数组中获取随机值的最快方法是什么?我想他们可能已经有了这个:
string[] fileLines = File.ReadAllLines(filePath);
fileLines.GetRandomValue();
是的,我知道GetRandomValue()不是一个真正的方法,有没有类似的东西更加简短而甜美?
static readonly Random rand = new Random();
public static T GetRandomValue<T>(T[] values) {
lock(rand) {
return values[rand.Next(values.Length)];
}
}
如果在紧密循环中使用,static
字段可以确保我们不会得到重复值,而lock
可防止多个调用者对其进行修改。
在C# 3.0中,这可以是一个扩展方法:
public static T GetRandomValue<T>(this T[] values) {...}
那么您可以按照您的示例完全使用它:
string[] fileLines = File.ReadAllLines(filePath);
string val = fileLines.GetRandomValue();
确实。
Random m = new Random();
string line = fileLines[m.Next(0, fileLines.Length);
尝试:
fileLines [new Random ().Next (fileLines.Length)]
我认为数组不支持这样的功能。最简单的方法就是获取一个随机数,然后获取相应的项。
Random rnd = new Random();
String item = fileLines[rnd.next(fileLines.Length);
string[] str = {"red","blue","pink","yellow","green","brown"};
int i = new Random.Next(0, str.length);
MessageBox.Show(str[i]);
Linq To Sql 的方式
var rFile = fileLines.OrderBy(x => Guid.NewGuid()).FirstOrDefault();