Fastest way to get a random value from a string array in C#?

.net-2.0, arrays, c#, string

Solution

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();

Problem

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?

Original source