网站建设评审,微信商城开店步骤,wordpress code 标签,绝唯cms网站管理系统以下是一个简单的随机方法#xff0c;可以从选定的 int 范围中不重复地随机选取数值。如果超出数值容量#xff0c;则会重置并重新开始选取。using UnityEngine;
using System.Collections.Generic;public class RandomSelector
{private readonly int _min;private readonly…以下是一个简单的随机方法可以从选定的 int 范围中不重复地随机选取数值。如果超出数值容量则会重置并重新开始选取。
using UnityEngine;
using System.Collections.Generic;public class RandomSelector
{private readonly int _min;private readonly int _max;private readonly Listint _availableNumbers;public RandomSelector(int min, int max){if (min max){Debug.LogError(min must be less than max);return;}_min min;_max max;_availableNumbers new Listint();// 初始化可用数值列表Reset();}// 获取下一个不重复的随机数public int GetNext(){if (_availableNumbers.Count 0){// 如果所有数值都已用完则重置Reset();}// 随机选择一个索引int index UnityEngine.Random.Range(0, _availableNumbers.Count);int selectedNumber _availableNumbers[index];_availableNumbers.RemoveAt(index); // 移除已选数值return selectedNumber;}// 重置可用数值列表private void Reset(){_availableNumbers.Clear();for (int i _min; i _max; i){_availableNumbers.Add(i);}}
}
1. 类定义与构造函数
public class RandomSelector
{private readonly int _min;private readonly int _max;private readonly Listint _availableNumbers;public RandomSelector(int min, int max){if (min max){Debug.LogError(min must be less than max);return;}_min min;_max max;_availableNumbers new Listint();// 初始化可用数值列表Reset();}
}
功能定义一个名为 RandomSelector 的类用于从指定范围内不重复地随机选取数值。构造函数接受两个参数 min 最小值和 max 最大值。逻辑参数校验检查 min 是否小于 max 否则输出错误信息并终止初始化。初始化字段_min 和 _max 存储用户指定的范围。_availableNumbers 用于保存当前可用的数值列表。调用 Reset 方法初始化 _availableNumbers 列表填充从 min 到 max 的所有整数。2. 核心方法 GetNext
public int GetNext()
{if (_availableNumbers.Count 0){// 如果所有数值都已用完则重置Reset();}// 随机选择一个索引int index UnityEngine.Random.Range(0, _availableNumbers.Count);int selectedNumber _availableNumbers[index];_availableNumbers.RemoveAt(index); // 移除已选数值return selectedNumber;
}
功能从可用数值列表中随机选取一个数并确保不重复选取。逻辑检查列表是否为空如果 _availableNumbers 为空即所有数值已被用完调用 Reset 方法重新填充列表。随机选择数值使用 UnityEngine.Random.Range 生成一个随机索引范围是 [0, _availableNumbers.Count) 。根据索引从列表中取出对应的数值。移除已选数值将选中的数值从列表中移除确保下次不会重复选取。返回结果返回选中的数值。3. 辅助方法 Reset
private void Reset()
{_availableNumbers.Clear();for (int i _min; i _max; i){_availableNumbers.Add(i);}
}
功能重置可用数值列表重新填充从 min 到 max 的所有整数。逻辑清空列表调用 Clear 方法清空 _availableNumbers 。重新填充列表使用循环将 min 到 max 的所有整数依次添加到列表中。4. 使用示例
private RandomSelector _selector;private void Start()
{// 创建一个范围为1到10的随机选择器_selector new RandomSelector(1, 10);// 获取10个不重复的随机数for (int i 0; i 10; i){Debug.Log(_selector.GetNext());}// 继续获取时会重置并重新开始Debug.Log(Resetting...);for (int i 0; i 5; i){Debug.Log(_selector.GetNext());}
}
功能演示如何使用 RandomSelector 类。逻辑初始化创建一个范围为 1 到 10 的 RandomSelector 实例。首次选取调用 GetNext 方法10次输出不重复的随机数。重置后选取当所有数值用完时 GetNext 会自动调用 Reset 方法。继续选取5个数值此时会从重置后的列表中重新开始。5. 关键点总结不重复随机通过维护一个可用数值列表并在每次选取后移除已选数值确保不重复。自动重置当列表为空时自动调用 Reset 方法重新填充。Unity适配使用 UnityEngine.Random 替代 System.Random 更适合Unity开发环境。适用场景需要从固定范围内不重复地随机选取数值的场景例如抽奖系统。随机生成关卡或敌人。洗牌算法如卡牌游戏。