c#随机数
//计算机中并没有随机数这个概念,我们使用代码生成的随机数,其实是经过一系列的算法,//计算出大量的数字,从中一个一个给我们的(假随机,伪随机)//使用场景: 注册账号 唯一标识符 点名器 抽奖 .....//产生随机数的方式//1.使用Random创建对象//(10)10是一个种子产生随机数的时候需要初始向量根据初始向量生成一系列的随机数从随机数队列当中取出下一个随机数//如果种子一样 产生的随机数就是一样的Random rnd new Random(10);Console.WriteLine(rnd.Next());//种子为10随机数//创建两个随机数对象并指定种子都为100Random rnd2 new Random(100);Random rnd3 new Random(100);Console.WriteLine(rnd2.Next():rnd3.Next());//一般不指定种子默认以当前时间作为种子时间不一样,种子不一样 随机数也不一样Random rnd4 new Random();Console.WriteLine(rnd4.Next(10, 21)); //产生一个10到21之间的随机数包含10 不包含21Console.WriteLine(rnd4.Next(21));// 如果从0开始 可以前面数省掉Random rnd5 new Random();//产生多个随机数的话可以使用for循环for (int i 0; i 4; i){//Random rnd5 new Random();//如果把new 对象这一句话写在循环里面 会导致产生随机一样。//俩次for循环执行时间间隔很短认为种子一样的 导致随机数一样Console.WriteLine(rnd5.Next());}//随机产生一个字符string s qwertyuiopasdfghjklzxcvbnm;//取出一个字符s[下标]下标的范围0-s.Length//产生一个随机数[0,s.Length ]范围的数Random rnd6 new Random();int num1 rnd6.Next(s.Length);Console.WriteLine(s[num1]);//产生四个字符Random rnd7 new Random();string res ;for (int i 0; i 4; i){res s[rnd7.Next(s.Length)];}Console.WriteLine(res);//产生4个随机字符Random rnd8 new Random();string res1 ;for (int i 0; i 4; i){//把数字转成char类型res1 (char)rnd8.Next(97, 123);// a-z的ascii的范围97-122// 随机数的范围97,123}Console.WriteLine(res1);// 以下了解//2 GUID 即Globally Unique Identifier全球唯一标识符//GUID的计算依赖当前的系统时间,计算机的硬件ID码等进行计算,生成128位随机数,无限接近于为唯一的输出//使用场景:生成产品秘钥 订单号 .....// GUID 的格式为“xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx”其中每个 x 是 0 - 9 或 a-f 范围内的一个32位十六进制数。// 例如6F9619FF - 8B86 - D011 - B42D - 00C04FC964FF 即为有效的 GUID 值。Console.WriteLine(Guid.NewGuid()); //f4ea33ed-8e52-462e-8d3a-620e38f3f91b//3 使用MD5加密// MD5信息摘要算法英语MD5 Message-Digest Algorithm是一种广泛应用的加密算法被广泛用于确保数据的完整性和安全性。// 它是一种单向散列函数在不可逆的情况下将任意长度的数据映射为128位的哈希值。当输入数据发生变化时生成的哈希值也随之变化。// 相同的输入数据生成相同的哈希值不同的输入数据生成不同的哈希值。作用是对一段信息(message)生成信息摘要(message - digest)// 该摘要对该信息具有唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密在哈希函数中计算散列值RNGCryptoServiceProvider rng new RNGCryptoServiceProvider(); // 创建加密对象byte[] bs new byte[10];//定义一个容器 存放的是字节类型的数据长度是10rng.GetBytes(bs); // 获取多个字节添加bs数组Console.WriteLine(BitConverter.ToString(bs));//把字节数组转成字符串