[英]Fastest way to get a random value from a string array in C#?
在.net 2.0框架中從C#中的字符串數組中獲取隨機值的最快方法是什么? 我想他們可能有這個:
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);
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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.