2025年4月29日火曜日

C#で重複しないランダムな数値を返すサンプル

 C#で重複しないランダムな数値を返すサンプル

最大値分のINT配列に連番を入れ、中身をシャッフルします。

iniShuffle(最大値)

GetShulle()で値を取り出します。

public class ShuffleRandom

{

int[] reint;

int counter;

public void iniShuffle(int inint)

        {

reint = new int[inint];

for(int i = 0; i< inint; i++)

            {

reint[i] = i + 1;

            }

int tmpint = 0;

int ranint = 0;

for (int i = 0; i < inint; i++)

{

tmpint = reint[i];

ranint = UnityEngine.Random.Range(0, inint);

reint[i] = reint[ranint];

reint[ranint] = tmpint;

}

}

public int GetShulle()

        {

int getint;

            if (reint.Length > counter)

            {

getint = reint[counter];

counter++;

            }

            else

            {

getint = -1;

            }

return getint;

        }