👌

C#でジャグ配列をランダムに並び替える(備忘録)

2023/09/19に公開

備忘録です

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