Unity C# genera números aleatorios que no se repiten en el intervalo


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. Se utiliza una tabla hash para colocar números aleatorios , que se pueden configurar como un diccionario o un tipo genérico según los deseos personales.

2. Al configurar el rango de números aleatorios, no haga que la suma de números aleatorios (Num) sea menor que el rango máximo de números aleatorios (Max), de lo contrario, el sistema seguirá cargándose y se congelará al ejecutar el ciclo de generación de números aleatorios. Solo se puede resolver forzando el cierre del programa.

3. El código se puede cambiar según los deseos personales.

4. El código no es original

Supongo que te gusta

Origin blog.csdn.net/podaosanshiliu/article/details/125871765
Recomendado
Clasificación