游戏掉落概率算法

您所在的位置:网站首页 unity随机掉落物品 游戏掉落概率算法

游戏掉落概率算法

2023-12-17 21:00| 来源: 网络整理| 查看: 265

游戏开发中我们经常会用到物品掉落概率这个算法,比如打怪掉不掉宝物,掉落的是何种宝物,这个都需要概率来控制的,在实际项目中抽奖系统有的也会采用跟掉落概率相似的算法。并且,抽奖系统的概率可能还会随着抽奖人数的变化而不断调整,这个虽然看起来有点复杂,其实只是多了逻辑,如果知道普遍的掉落概率算法,那么我相信这种可控的概率算法也是很简单的。掉率概率的原理很简单,就是基本高中概率知识,原理如下:假设有Blue,red,yellow,black,white,gray 这六种颜色的球,他们掉落的概率分别是0.05f,0.1f,0.1f,0.2f,0.25f,0.3f,然后他们的概率和是1,我们在一个长度为1的线段上画出这个量,如下: 这里写图片描述 原理非常简单,也很好理解,具体的实现代码如下:

using UnityEngine; using System.Collections; using System.Collections.Generic; public class Probability : MonoBehaviour { private float[] ProbabilityValue; Dictionary ObjectValue = new Dictionary(); private void Init() { ProbabilityValue = new float[6]{0.05f,0.1f,0.1f,0.2f,0.25f,0.3f}; } private void IntProbabilityValue() { ObjectValue.Add(0,"Blue"); ObjectValue.Add(1, "Red"); ObjectValue.Add(2, "Yellow"); ObjectValue.Add(3, "Black"); ObjectValue.Add(4, "White"); ObjectValue.Add(5, "Gray"); } private int Inder(float[] ProbabilityValue) { float total = 0; //首先计算出概率的总值,用来计算随机范围 for (int i = 0; i < ProbabilityValue.Length; i++) { total += ProbabilityValue[i]; } Random rd = new Random(); float Nob = Random.Range(0,total); for (int i = 0; i < ProbabilityValue.Length; i++) { if (Nob < ProbabilityValue[i]) { return i; } else { Nob -= ProbabilityValue[i]; } } return ProbabilityValue.Length - 1; } //初始化 void Start() { Init(); IntProbabilityValue(); test(); } public void CreatObj() { string name = ObjectValue[Inder(ProbabilityValue)]; Debug.Log(name); } //这个是测试方法,测出1万次模拟产生的各种球的数量。 private void test() { int Blue = 0; int Red = 0; int Yellow = 0; int Black = 0; int White = 0; int Gray = 0; for (int i=0;i


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3