您的位置:首页 > 编程语言 > C#

分享:读取指定范围随机数(可设置不重复以及重复次数

2014-04-24 18:59 447 查看
/// <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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息