What's the fastest way to get a random value from a string array in C# on the .net 2.0 framework? I figured they might have had this:
string[] fileLines = File.ReadAllLines(filePath);
fileLines.GetRandomValue();
Yes, I know GetRandomValue() is not an actual method, is there something similar that's more or less equally short and sweet?
Not built in, but easy enough to add...
static readonly Random rand = new Random();
public static T GetRandomValue<T>(T[] values) {
lock(rand) {
return values[rand.Next(values.Length)];
}
}
(the static
field helps ensure we don't get repeats if we use it in a tight loop, and the lock
keeps it safe from multiple callers)
In C# 3.0, this could be an extension method:
public static T GetRandomValue<T>(this T[] values) {...}
Then you could use it exactly as per your example:
string[] fileLines = File.ReadAllLines(filePath);
string val = fileLines.GetRandomValue();
Indeed.
Random m = new Random();
string line = fileLines[m.Next(0, fileLines.Length);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With