コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】IEnumerable からランダムに値を取得する拡張メソッド

ソースコード

System.Random 版

using System;
using System.Collections.Generic;
using System.Linq;

public static partial class IEnumerableExt
{
    private static readonly Random m_random = new Random();

    public static T RandomAt<T>( this IEnumerable<T> self )
    {
        return self.Any() 
            ? self.ElementAt( m_random.Next( self.Count() ) ) 
            : default;
    }
}

UnityEngine.Random 版

using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public static partial class IEnumerableExt
{
    public static T RandomAt<T>( this IEnumerable<T> self )
    {
        return self.Any() 
            ? self.ElementAt( Random.Range( 0, self.Count() ) ) 
            : default;
    }
}

使い方

var list  = new[] { 1, 2, 3, 4, 5 };
var value = list.RandomAt();