void Start()
{
PrintNum();
}
/// <summary>
/// 生成随机数
/// </summary>
/// <param name="num">随机数个数</param>
/// <param name="min">最小随机数(不包含)</param>
/// <param name="max">最大随机数(不包含)</param>
/// 取数范围不包含最大值最小值
/// 最大值不可以小于总数,否则会出错
/// <returns></returns>
private Hashtable GetHashtableRandomNum(int num, int min, int max)
{
System.Random random = new System.Random();//新建随机数
Hashtable hashtable = new Hashtable();//新建哈希表
if (num<max)
{
for (int i = 0; hashtable.Count < num; i++)
{
int nValue = random.Next(min, max);//返回一个非负的随机数,不包含最大值
//判断数字是否重复,且不小于最小值
if (!hashtable.ContainsValue(nValue) && nValue != min)
{
hashtable.Add(i, nValue);//将不重复的数放入哈希表
}
}
}
else
{
//错误提示
throw new System.Exception(string.Format("总数数值 {0} 大于或等于最大值 {1} ",num,max));
}
//返回已经初始化赋值的哈希表
return hashtable;
}
/// <summary>
/// 遍历表中数据
/// </summary>
private void PrintNum()
{
//注意:随机数是什么数据类型,要在遍历循环里面设置好,如果设置为var 则返回的随机数数据类型为Object
foreach (int item in GetHashtableRandomNum(8, 0, 9).Values)
{
Debug.Log(item);
}
}
1. 해시 테이블은 난수를 배치하는 데 사용되며 개인의 희망에 따라 사전 또는 일반 유형으로 설정할 수 있습니다.
2. 난수 범위를 설정할 때 난수 합계(Num)를 최대 난수 범위(Max)보다 작게 만들지 마십시오. 그렇지 않으면 난수 생성 주기를 실행할 때 시스템이 계속 로드되고 정지됩니다. 프로그램을 강제 종료해야만 해결할 수 있습니다.
3. 코드는 개인의 희망에 따라 변경될 수 있습니다.
4. 코드가 원본이 아닙니다.