はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】一次元配列やリストなどのコレクションからランダムで要素を取り出す拡張メソッド

はじめに

今回は一次元配列やリストなどのコレクションからランダムで要素を取り出す拡張メソッドを作ってみたので書き残しておきたいと思います。

一次元配列やリストといった、データの集まりからランダムで要素を一つ取り出す拡張メソッドを用意してみました。

コード

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

public static class ExtensionMethods
{
    public static T Random<T> (this IEnumerable<T> collection)
    {
        return collection.ElementAt(UnityEngine.Random.Range(0, collection.Count()));
    }
}

使い方

using UnityEngine;

public class RandomTest : MonoBehaviour
{
    void Start()
    {
        var array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        for(int i = 0; i < 10; i++)
        {
            var element = array.Random();        //今回作成したランダムで要素を取り出すメソッド

            Debug.Log(element);
        }
        
    }
}

f:id:hanaaaaaachiru:20191016005438p:plain

さいごに

UnityEngineSystemの両方にRandomがあるのでそこがややこしいですよね。

いつもどっちを使おうか悩んでしまってしまいます…。