👌
C#でジャグ配列をランダムに並び替える(備忘録)
備忘録です
C#といっても、Unity環境で2次元ジャグ配列を作ります。ジャグ配列をランダムに並び替えて、先頭から特定の数を取り出します。
C#のジャグ配列をランダムに並び替え
- C#
- Unity
- ジャグ配列の並び替え
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemShuffleGenerator2 : MonoBehaviour
{
public GameObject prefab;
int[][] points =
{
new int []{ 10, 5, 50 },
new int []{ 20, 5, 40 },
new int []{ 30, 5, 30 },
new int []{ 40, 5, 20 },
};
// Start is called before the first frame update
void Start()
{
// 配列をシャッフルする
Shuffle(this.points);
// 4個の要素から先頭の2個のみを表示
for (int i = 0; i < 2; i++)
{
Vector3 vec3 = new Vector3(this.points[i][0], this.points[i][1], this.points[i][2]);
Instantiate(prefab, vec3, Quaternion.identity);
}
}
// Update is called once per frame
void Update()
{
}
public static void Shuffle(int[][] array)
{
for (int i = array.Length - 1; i > 0; i--)
{
//[0]~[i]
int j = Random.Range(0, i + 1);
Swap(array, i, j);
}
}
//要素のスワップ
public static void Swap(int[][] array, int i, int j)
{
int[] tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
Discussion