Unity C#은 간격에서 반복되지 않는 난수를 생성합니다.


void Start()
    {
        PrintNum();
    }


/// <summary>
    /// 生成随机数
    /// </summary>
    /// <param name="num">随机数个数</param>
    /// <param name="min">最小随机数(不包含)</param>
    /// <param name="max">最大随机数(不包含)</param>
    /// 取数范围不包含最大值最小值
    /// 最大值不可以小于总数,否则会出错
    /// <returns></returns>
    private  Hashtable GetHashtableRandomNum(int num, int min, int max)
    {
        System.Random random = new System.Random();//新建随机数
        Hashtable hashtable = new Hashtable();//新建哈希表
        if (num<max)
        {
            for (int i = 0; hashtable.Count < num; i++)
            {
                int nValue = random.Next(min, max);//返回一个非负的随机数,不包含最大值
                                                   //判断数字是否重复,且不小于最小值
                if (!hashtable.ContainsValue(nValue) && nValue != min)
                {
                    hashtable.Add(i, nValue);//将不重复的数放入哈希表
                }
            }
        }
        else
        {
             //错误提示
            throw new System.Exception(string.Format("总数数值 {0} 大于或等于最大值 {1} ",num,max));
        }
        //返回已经初始化赋值的哈希表
        return hashtable;
    }


 /// <summary>
    /// 遍历表中数据
    /// </summary>
    private void PrintNum()
    {
       //注意:随机数是什么数据类型,要在遍历循环里面设置好,如果设置为var 则返回的随机数数据类型为Object
        foreach (int item in GetHashtableRandomNum(8, 0, 9).Values)
        {
            Debug.Log(item);
        }
    }

1. 해시 테이블은 난수를 배치하는 데 사용되며 개인의 희망에 따라 사전 또는 일반 유형으로 설정할 수 있습니다.

2. 난수 범위를 설정할 때 난수 합계(Num)를 최대 난수 범위(Max)보다 작게 만들지 마십시오. 그렇지 않으면 난수 생성 주기를 실행할 때 시스템이 계속 로드되고 정지됩니다. 프로그램을 강제 종료해야만 해결할 수 있습니다.

3. 코드는 개인의 희망에 따라 변경될 수 있습니다.

4. 코드가 원본이 아닙니다.

추천

출처blog.csdn.net/podaosanshiliu/article/details/125871765