关于随机数
2018-06-18 04:31:31来源:未知 阅读 ()
随机数在现代社会应用不可谓少,我们可以在每天用到的手机验证码,网上博彩,网上斗地主等等 中看到随机数的影子
7月27日晚9点,学习之余在如鹏网杨中科视频中便看到关于随机数的解释http://www.rupeng.com/Courses/Index/13
下面是自己定义的线性求同法求随机数
public class MyRandom { private int seed; public MyRandom(int seed) { this.seed = seed; } public int Next() { int n = (seed*29 + 37) % 1000; this.seed = n; return n; } }
因为是线性,这种方法输入相同种子每次输出都是一样的结果
所以我们要给他加入一个可变参数来控制这个随机数
在客户端加入系统启动后经过时间的毫秒数 int tc = Environment.TickCount;
int tc = Environment.TickCount; Console.WriteLine("tickCount=" + tc); //MyRandom mR = new MyRandom(5); MyRandom mR = new MyRandom(tc); for (int i = 0; i < 100; i++) { Console.WriteLine(mR.Next()); } Console.ReadKey();
这种就好了很多,c#内部Random方法也是用的这种方法,
但是现在的网站大多都支持多用户并发操作。
所以,相同时间多个用户操作时会获得相同随机数,这就增加了网站的不稳定性
这时我们需要考虑用多个值来约束这个随机数,c#给出的解决方案是
byte[] randomBytes = new byte[3]; RNGCryptoServiceProvider r = new RNGCryptoServiceProvider(); for (int i = 0; i < 100; i++) { r.GetBytes(randomBytes); int rngNum = BitConverter.ToInt16(randomBytes, 0); Console.WriteLine(rngNum); } Console.ReadLine();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 怎么自学JAVA开发? 2020-05-22
- 关于序列化的 10 几个问题,你顶得住不?.md 2020-05-19
- 错题记录——关于Java中private的用法(类与封装) 2020-05-16
- 关于Spring源码的面试题,他的回答是我见过最棒的了 2020-05-13
- 关于Spring、Springmvc、Springboot和SSM之间的区别,这篇文 2020-05-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash