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);
I don't think arrays support such a function. The easiest way is just to get a random number, and get the corresponding item.
Random rnd = new Random();
String item = fileLines[rnd.next(fileLines.Length);
Try:
fileLines [new Random ().Next (fileLines.Length)]
Linq To Sql way
var rFile = fileLines.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
If you see error you should add System.Linq;
I'd have used this method to get random item from an array :
string[] str = {"red","blue","pink","yellow","green","brown"};
int i = new Random.Next(0, str.length);
MessageBox.Show(str[i]);