簡體   English   中英

從C#中的字符串數組中獲取隨機值的最快方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM