프로그램/유니티 스크립트 소스
[유니티 스크립트 소스] 배열, 리스트 섞기(Shuffle)
코더 제로
2021. 2. 9. 00:51
728x90
반응형
1. 리스트 섞기
private List<T> ShuffleList<T>(List<T> list)
{
int random1, random2;
T temp;
for (int i = 0; i < list.Count; ++i)
{
random1 = Random.Range(0, list.Count);
random2 = Random.Range(0, list.Count);
temp = list[random1];
list[random1] = list[random2];
list[random2] = temp;
}
return list;
}
2. 배열 섞기
private T[] ShuffleArray<T>(T[] array)
{
int random1, random2;
T temp;
for (int i = 0; i < array.Length; ++i)
{
random1 = Random.Range(0, array.Length);
random2 = Random.Range(0, array.Length);
temp = array[random1];
array[random1] = array[random2];
array[random2] = temp;
}
return array;
}
3. 예제
using System.Collections.Generic;
using UnityEngine;
public class Shuffle : MonoBehaviour
{
void Start()
{
List<int> lists = new List<int>();
lists.Add(0);
lists.Add(1);
lists.Add(2);
lists.Add(3);
lists.Add(4);
lists = ShuffleList(lists);
for (int i = 0; i < lists.Count; i++)
{
Debug.Log(lists[i]);
}
int[] arrays = new int[5];
arrays[0] = 0;
arrays[1] = 1;
arrays[2] = 2;
arrays[3] = 3;
arrays[4] = 4;
arrays = ShuffleArray(arrays);
for (int i = 0; i < arrays.Length; i++)
{
Debug.Log(arrays[i]);
}
}
private List<T> ShuffleList<T>(List<T> list)
{
int random1, random2;
T temp;
for (int i = 0; i < list.Count; ++i)
{
random1 = Random.Range(0, list.Count);
random2 = Random.Range(0, list.Count);
temp = list[random1];
list[random1] = list[random2];
list[random2] = temp;
}
return list;
}
private T[] ShuffleArray<T>(T[] array)
{
int random1, random2;
T temp;
for (int i = 0; i < array.Length; ++i)
{
random1 = Random.Range(0, array.Length);
random2 = Random.Range(0, array.Length);
temp = array[random1];
array[random1] = array[random2];
array[random2] = temp;
}
return array;
}
}
728x90
반응형