はじめに
今回は一次元配列やリストなどのコレクションからランダムで要素を取り出す拡張メソッドを作ってみたので書き残しておきたいと思います。
一次元配列やリストといった、データの集まりからランダムで要素を一つ取り出す拡張メソッドを用意してみました。
コード
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); } } }
さいごに
UnityEngine
とSystem
の両方にRandom
があるのでそこがややこしいですよね。
いつもどっちを使おうか悩んでしまってしまいます…。