using System;
using System.Data;
using System.Configuration;namespace youxi
{
class random1
{
private static char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
};
public enum RandomType//随机类型
{
All,
Number,
Uppercased,
Lowercased,
NumberAndUppercased,
NumberAndLowercased,
UppercasedAndLowercased,
}
/// <summary>
/// 产生随机数
/// </summary>
/// <param name="Length">随机数长度</param>
/// <param name="rt">随机数类型</param>
/// <returns></returns>
public static string GenerateRandom(int Length, RandomType rt)
{
int initsize = 0;//总大小
int beginsize = 0;//开始下标
int endsize = 0;//结束下标
Boolean IsCross = false;
switch (rt)
{
case RandomType.All:
{
initsize = 62;
beginsize = 1;
endsize = 62;
//IsCross = false;
break;
}
case RandomType.Lowercased:
{
initsize = 26;
beginsize = 11;
endsize = 36;
//IsCross = false;
break;
}
case RandomType.Uppercased:
{
initsize = 26;
beginsize = 37;
endsize = 62;
// IsCross = false;
break;
}
case RandomType.Number:
{
initsize = 10;
beginsize = 1;
endsize = 10;
//IsCross = false;
break;
}
case RandomType.UppercasedAndLowercased:
{
initsize = 52;
beginsize = 11;
endsize = 62;
//IsCross = false;
break;
}
case RandomType.NumberAndLowercased:
{
initsize = 36;
beginsize = 1;
endsize = 36;
//IsCross = false;
break;
}
case RandomType.NumberAndUppercased:
{
IsCross = true;
break;
}
}
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(initsize);
Random rd = new Random();
if (!IsCross)
{
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[rd.Next(beginsize, endsize)]);
}
}
else
{
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[rd.Next(1, 10)]);
newRandom.Append(constant[rd.Next(37, 62)]);
}
}
return newRandom.ToString();
}
/// <summary>
/// 在一定范围内产生指定个数的不重复的随机数,已排序好
/// </summary>
/// <param name="BeginInt">起始数(包括)</param>
/// <param name="EndInt">结束数(包括)</param>
/// <param name="IntNum">随机数的个数</param>
/// <returns></returns>
public static int[] IntRandom(int BeginInt, int EndInt, int IntNum)
{
Random random_1=new Random ();
if (IntNum > (EndInt - BeginInt + 1))
{
throw new Exception("参数违法");
}
int []result=new int [IntNum ];//最终结果
int[] randRemember = new int[EndInt - BeginInt + 1];//记录是否已经产生过
int number;
for (int i = 0; i <IntNum ; )
{
number = random_1.Next(BeginInt+1, EndInt+1);
if (randRemember[number - BeginInt] == 1)//是否已经产生过
{
continue;
}
else
{
randRemember[number -BeginInt ] = 1;
i++;
}
}
for (int i = 0,j=0; i < EndInt - BeginInt + 1; i++)
{
if (randRemember[i] == 1)
{
result[j] = i + BeginInt;
j++;
}
}
return result;
}
}
}
能具体帮分析下吗?我想写 扑克程序现在想知道怎么随机取牌并且不重复,
using System.Data;
using System.Configuration;namespace youxi
{
class random1
{
private static char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
};
public enum RandomType//随机类型
{
All,
Number,
Uppercased,
Lowercased,
NumberAndUppercased,
NumberAndLowercased,
UppercasedAndLowercased,
}
/// <summary>
/// 产生随机数
/// </summary>
/// <param name="Length">随机数长度</param>
/// <param name="rt">随机数类型</param>
/// <returns></returns>
public static string GenerateRandom(int Length, RandomType rt)
{
int initsize = 0;//总大小
int beginsize = 0;//开始下标
int endsize = 0;//结束下标
Boolean IsCross = false;
switch (rt)
{
case RandomType.All:
{
initsize = 62;
beginsize = 1;
endsize = 62;
//IsCross = false;
break;
}
case RandomType.Lowercased:
{
initsize = 26;
beginsize = 11;
endsize = 36;
//IsCross = false;
break;
}
case RandomType.Uppercased:
{
initsize = 26;
beginsize = 37;
endsize = 62;
// IsCross = false;
break;
}
case RandomType.Number:
{
initsize = 10;
beginsize = 1;
endsize = 10;
//IsCross = false;
break;
}
case RandomType.UppercasedAndLowercased:
{
initsize = 52;
beginsize = 11;
endsize = 62;
//IsCross = false;
break;
}
case RandomType.NumberAndLowercased:
{
initsize = 36;
beginsize = 1;
endsize = 36;
//IsCross = false;
break;
}
case RandomType.NumberAndUppercased:
{
IsCross = true;
break;
}
}
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(initsize);
Random rd = new Random();
if (!IsCross)
{
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[rd.Next(beginsize, endsize)]);
}
}
else
{
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[rd.Next(1, 10)]);
newRandom.Append(constant[rd.Next(37, 62)]);
}
}
return newRandom.ToString();
}
/// <summary>
/// 在一定范围内产生指定个数的不重复的随机数,已排序好
/// </summary>
/// <param name="BeginInt">起始数(包括)</param>
/// <param name="EndInt">结束数(包括)</param>
/// <param name="IntNum">随机数的个数</param>
/// <returns></returns>
public static int[] IntRandom(int BeginInt, int EndInt, int IntNum)
{
Random random_1=new Random ();
if (IntNum > (EndInt - BeginInt + 1))
{
throw new Exception("参数违法");
}
int []result=new int [IntNum ];//最终结果
int[] randRemember = new int[EndInt - BeginInt + 1];//记录是否已经产生过
int number;
for (int i = 0; i <IntNum ; )
{
number = random_1.Next(BeginInt+1, EndInt+1);
if (randRemember[number - BeginInt] == 1)//是否已经产生过
{
continue;
}
else
{
randRemember[number -BeginInt ] = 1;
i++;
}
}
for (int i = 0,j=0; i < EndInt - BeginInt + 1; i++)
{
if (randRemember[i] == 1)
{
result[j] = i + BeginInt;
j++;
}
}
return result;
}
}
}
能具体帮分析下吗?我想写 扑克程序现在想知道怎么随机取牌并且不重复,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货