网站目录 index,网页设计教程步骤,做外贸不能访问国外网站怎么办,大淘客联盟做网站C# 提供了一种强大而方便的工具类 Random #xff0c;用于生成随机数。这里将分类讨论如何通过 C# 实现随机数生成#xff0c;以及应用于实际情况中的一些具体方案。
一、Random 类概述
Random 类表示一个伪随机数生成器#xff0c;用于生成满足随机性统计要求的数字序列。…C# 提供了一种强大而方便的工具类 Random 用于生成随机数。这里将分类讨论如何通过 C# 实现随机数生成以及应用于实际情况中的一些具体方案。
一、Random 类概述
Random 类表示一个伪随机数生成器用于生成满足随机性统计要求的数字序列。
重载的 Random.Next()
Random.Next() 方法提供了三种重载 Next()生成大于等于 0 且小于 Int32.MaxValue 的 32 位整数。 Next(int minValue, int maxValue)生成从 minValue (包括) 到 maxValue (不包括) 的整数。
示例
/// summary
/// 生成随机数列表
/// /summary
/// returns/returns
public Listint RDNumber()
{Listint col new Listint();for (int i 0; i 6; i){Random rd new Random(); // 初始化一个新的 Random 实例var a rd.Next(); // 生成一个随机数col.Add(a);}return col;
} 二、生成不重复的随机数
方法一利用 List 根据重复状态迭代
通过检查随机数是否存在防止重复
/// summary
/// 指定范围内的不重复随机数(要求随机数个数小于随机数范围否则程序会陷入死循环。可在循环中加入跳出机制)
/// /summary
/// param nameNumber随机数个数/param
/// param nameminNum随机数下限/param
/// param namemaxNum随机数上限/param
/// returns/returns
public Listint GetRandomArray(int Number, int minNum, int maxNum)
{int j;Listint b new Listint();Random r new Random();for (j 0; j Number; j){int i r.Next(minNum, maxNum 1);if (b.Contains(i)) //是否包含这个数{j j - 1;}else{b.Add(i);}}return b;
}
方法二使用索引替换
思想是用一个数组来保存索引号先随机生成一个数组位置然后把随机抽取到的位置的索引号取出来并把最后一个索引号复制到当前的数组位置然后使随机数的上限减一具体如先把这100个数放在一个数组内每次随机取一个位置第一次是1-100第二次是1-99...将该位置的数用最后的数代替。
int[] index new int[15];
for (int i 0; i 15; i)index[i] i;
Random r new Random();
//用来保存随机生成的不重复的10个数
int[] result new int[10];
int site 15;//设置上限
int id;
for (int j 0; j 10; j)
{id r.Next(1, site - 1);//在随机位置取出一个数保存到结果数组result[j] index[id];//最后一个数复制到当前位置index[id] index[site - 1];//位置的上限减少一site--;
}
三、生成字母数字的随机组合
这里先说一下说一下ASCIIASCII(American Standard Code for Information Interchange 美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统主要 用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码 系统并等同于国际标准ISO/IEC 646。
ASCII 系统概述 大写字母 A-Z 的 ASCII 值范围为 65-90 小写字母 a-z 的 ASCII 值范围为 97-122
示例代码
/// summary
/// 生成单个随机数字
/// /summary
public int createNum(Random random)
{int num random.Next(10);return num;
}
/// summary
/// 生成单个大写随机字母
/// /summary
public string createBigAbc(Random random)
{//A-Z的 ASCII值为65-90int num random.Next(65, 91);string abc Convert.ToChar(num).ToString();return abc;
}
/// summary
/// 生成单个小写随机字母
/// /summary
public string createSmallAbc(Random random)
{//a-z的 ASCII值为97-122int num random.Next(97, 123);string abc Convert.ToChar(num).ToString();return abc;
}
生成随机字母数字组合
/// summary
/// 生成随机字母数字组合
/// /summary
/// returns/returns
public string GetRandom()
{Random random new Random();//创建一个StringBuilder对象存储密码StringBuilder sb new StringBuilder();//使用for循环把单个字符填充进StringBuilder对象里面变成14位密码字符串for (int i 0; i 14; i){//随机选择里面其中的一种字符生成switch (random.Next(3)){case 0://调用生成生成随机数字的方法sb.Append(createNum(random));break;case 1://调用生成生成随机小写字母的方法sb.Append(createSmallAbc(random));break;case 2://调用生成生成随机大写字母的方法sb.Append(createBigAbc(random));break;}}return sb.ToString();
}