LoginSignup
16
16

More than 5 years have passed since last update.

配列(IEnumerable)の中からランダムで一つ返却するLinq拡張

Last updated at Posted at 2016-01-03

作っておくと、ちょっと便利

public static class LinqExtensions
{
    public static T RandomAt<T>(this IEnumerable<T> ie)
    {
        if (ie.Any() == false) return default(T);
        return ie.ElementAt(Random.Range(0, ie.Count()));
    }
}

使い方

    public void Start()
    {
        var data = new []{ 1, 2, 3, 4, 5, 10, 20, 31, 32, 33, 34, 35 };
        var r1 = data.RandomAt();
        Debug.Log("r1:" + r1); 
        var r2 = data.Where(num => num % 2 == 0).RandomAt();
        Debug.Log("r2:" + r2);
    }

IEnumerable<T>なので

var r1 = data.RandomAt();
のように、配列に直接使ってもよいし、

var r2 = data.Where(num => num % 2 == 0).RandomAt();
のように、他のLinqと組み合わせてもよい(この例では、int配列の偶数の値からランダムで一つ)

16
16
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16