随机概率问题

遇到了一个随机概率问题
根据策划要求随机两个高台之间的间距


随机概率问题_第1张图片
随机难度数值表.PNG

首先需要创建一个动态二维数组,将数值存入数组中

//创建一个二维动态数组,根据数组取值
        List> prop = new List>
        {
            new List() { 3.33f, 4.33f, 5.33f },//3(33%),4(33%),5(33%)高台间距的概率
            new List() { 3.1f, 4.25f, 5.30f,6.25f, 7.10f },//3(10%),4(25%),5(30%),6(25%),7(10%)高台间距的概率
            new List() { 5.1f, 6.25f, 7.30f,8.25f, 9.10f },
            new List() { 7.1f, 8.25f, 9.30f,10.25f, 11.10f },
            new List() { 7.05f, 8.1f, 9.25f,10.35f, 11.25f }

        };

然后根据分数取不同数组

 //根据分数判断取哪一个数组中的元素
        if (Plate.score < 30)
        {
            List values = prop[0];
            ChangeProbability(values);
        }
        else if (Plate.score < 60)
        {
            List values = prop[1];
            ChangeProbability(values);

        }
        else if (Plate.score < 90)
        {
            List values = prop[2];
            ChangeProbability(values);

        }
        else if (Plate.score < 120)
        {
            List values = prop[3];
            ChangeProbability(values);

        }
        else
        {
            List values = prop[4];
            ChangeProbability(values);

        }

判断概率的方法通用集成为一个方法

void ChangeProbability(List values)
    {
        //公共的随机概率
        float random = UnityEngine.Random.Range(0, 1.0f);
        //如果是0.4
        float tmpRandom = 0;
        posr = 0;
        foreach (var item in values)
        {
            tmpRandom += (item - (int)item);
            if (tmpRandom > random)
            {
                posr = (int)item;
                //随机整数之后正负0.5随机
                int ran = UnityEngine.Random.Range(-1,1);
                if (ran == -1)
                {
                    posr = posr + 0.5f;
                }
                else
                {
                    posr = posr - 0.5f;
                }
                Debug.Log("posr" + posr);

                break;
            }
        }
    }

你可能感兴趣的:(随机概率问题)