随机数生成及控制.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
随机数生成及控制

随机数生成及控制 对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net中的随机数发生器默认采用的方法。 我们可以使用两种方式初始化一个随机数发生器: 第一种方法不指定随机种子,系统自动选取当前时间作为随机种子: Random ro = new Random(); 第二种方法可以指定一个int型参数作为随机种子: int iSeed=10; Random ro = new Random(10); 之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。 不指定上下限的使用如下: int iResult; iResult=ro.Next(); 下面的代码指定返回小于100的随机数: int iResult; int iUp=100; iResult=ro.Next(iUp); 而下面这段代码则指定返回值必须在50-100的范围之内: int iResult; int iUp=100; int iDown=50; iResult=ro.Next(iDown,iUp); 除了Random.Next()方法之外,Random类还提供了Random.NextDouble()方法产生一个范围在0.0-1.0之间的随机的双精度浮点数: double dResult; dResult=ro.NextDouble(); 综上所述,我们可以通过控制生成的数字来转化为字符类型,这些数字就是所对应字符的Unicode码(ASCII码中英文以及常用字符部分的码值与Unicode相同)。 验证码所需要的成员由于在Unicode中的分布,我的思路是分为:大写英文字母、小写英文字母、阿拉伯数字,三个部分。对应Unicode为 :大写(65-90 对应 A-Z) 小写(97-122 对应 a-z) 数字(48-57 对应 0-9) 所以我选用二重随机来实现每个字符的生成 第一层随机就只用生成三个数来确定是在哪一部分中取出字符,然后再用random - next( , )控制生成数字的范围,再用Convert::ToChar将数字转化为字符形式呈现。 核心代码: Random^ random = gcnew Random(); int chooce; arraychar^ chars = gcnew arraychar(5); ////////////////////////////////////////////// for( int i = 0; i chars - Length; i++) { chooce =random -Next(3); if( chooce == 0) { chars[i] = random - Next(65,90); } else if(chooce == 1) { chars[i] = random - Next(48,57); } else if(chooce == 2) { chars[i] = random - Next(97,122); } } Console::WriteLine(L验证码为); for (int i = 0; i chars - Length; i++) { Console::Write(L{0} ,Convert::ToChar(chars[i])); }

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档