/// <summary>
/// 生成随机数
/// </summary>
/// <param name="minNum">下限</param>
/// <param name="maxNum">上限</param>
/// <param name="count">生成的数量</param>
/// <param name="maxRepeat">最大重复数(0为不重复)</param>
/// <returns></returns>
public List<int> GenerateNumber(int minNum, int maxNum, int count, int maxRepeat)
{
List<RangeItem> container = new List<RangeItem>();
List<int> result = new List<int>();
for (int i = minNum; i <= maxNum; i++)
{
container.Add(new RangeItem() { value = i, count = 0 });
}
for (int i = 0; i < count; i++)
{
GetNum(maxRepeat, container, result);
}
result.Sort();
return result;
}
private void GetNum(int maxRepeat, List<RangeItem> container, List<int> result)
{
int index = Random.Range(0, container.Count);
int value = container[index].value;
if (result.Contains(value))
{
if (container[index].count == maxRepeat)
{
container.RemoveAt(index);
GetNum(maxRepeat, container, result);
}
else
{
result.Add(value);
container[index].count++;
if (container[index].count == maxRepeat)
{
container.RemoveAt(index);
}
}
}
else
{
result.Add(value);
if (maxRepeat == 0)
{
container.RemoveAt(index);
}
}
}
public class RangeItem
{
public int value;
public int count;
}
分享:读取指定范围随机数(可设置不重复以及重复次数
最新推荐文章于 2024-10-02 07:55:04 发布