关键词不能为空

当前您在: 主页 > 英语 >

7 C# Random 生成随机数字和字母

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:12
tags:

-

2021年2月28日发(作者:曼诺内)



C# .NET Random


生成随机数字和字母



1


:随机数生成器





Random



.NET


的伪随机数生成器,< /p>


要生成各种类型的随机数,


必须先得到它的实例对


象,然后再生成随机数



2


:种子



随机数的生成是从种子值开始。



如果 反复使用同一个种子,就会生成相同的数字系列,产生不


同序列的一种方法是使种子值与 时间相关



3


:对象实例



默认情况下,


Random


类的无参数构造函数使用系统时钟生成其种子值



参数化构造函数可提供一个



Int32


类型的数字为起始值



4


:生成方案



方案


1



只实例化一个对象,多次方 法调用



?



Random rnd = new



Random();



int



i1 = (10);



int



i2 = (10);



//


简单,方便,常用,生成的数字分布均匀,每个数字返回的可能性均相等。


//


一般是实例为静态对象,以减少实例化的次数,避 免产生相同的种子值,如


下:



?



private



static



RNGCryptoServiceProvider rand = new



RNGCryptoServiceProvider();



方案


2



每次 方法调用都用一个新的实例(无参)



?



Random rnd1 = new



Random();



int



i1 = (10);



Random rnd2 = new



Random();



int



i2 = (10);



//


两个随机数十有八九相同



//


默认种子值是从系统时钟派生而来的,具有有限的分辨率。



//


因此,通过调用默认构造函数而频繁创建的不同对象将具 有相同的默认种子


值,因而会产生几组相同的随机数。



解决方案:



阻塞当前线程一小段时间



?



Random rnd1 = new



Random();



(500);



Random rnd2 = new



Random();



或者:应用一个算法来区分每个调用的种子值。



例如,


下面的代码使用右移位运算符为多个可以使用相同时间值初始化的



Random


对象


(在



1


和大约



28


个对象之间)生成不同的种子值。



?



int



count = 4;



Random[] rnds = new



Random[count];



for



(int



i = 0; i < count; i++)



{



rnds[i] = new



Random(unchecked((int)( >> i)));



}



5


:通用数字和字母随机生成方案



数组方式:略



字符串方式:


不灵活,但比较简便,用于验证码已足够



?



string



str =


@



public



string



GetMix(Random rnd)



{



//


返回数字



// return (10).ToString();



//


返回小写字母



// return ing(10+(26),1);


-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:12,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679795.html

7 C# Random 生成随机数字和字母的相关文章