配列(IEnumerable)の中からランダムで一つ返却するLinq拡張
作っておくと、ちょっと便利
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);
}
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配列の偶数の値からランダムで一つ)
Author And Source
この問題について(配列(IEnumerable)の中からランダムで一つ返却するLinq拡張), 我々は、より多くの情報をここで見つけました https://qiita.com/divideby_zero/items/3a5f92a9208f87204cce著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .