- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
快速连续产生相同随机数的解决方案总结
c# Random快速连续产生相同随机数的解决方案?????? Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如果计算机运行速度很快,如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数,因为伪随机的数字,在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。Random快速连续产生相同随机数的解决方案: 1、延时的办法。可以采用for循环的办法,也可以采用Thread.Sleep(100); 2、提高随机数不重复概率的种子生成方法: Random 类命名空间:System表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了。伪随机数的生成是从种子值开始。如果反复使用同一个种子,就会生成相同的数字系列。产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。通过创建单个而不是多个 Random 对象可以避免此问题。若要提高性能,请创建一个随时间推移能生成多个随机数的 Random 对象,而不要反复新建会生成同一个随机数的 Random 对象。Random 成员名称 ● 说明Equals ● 确定指定的 Object 是否等于当前的 Object。(继承自 Object。)Finalize ● 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。(继承自 Object。)GetHashCode ● 用作特定类型的哈希函数。(继承自 Object。)GetType ● 获取当前实例的 Type。(继承自 Object。)MemberwiseClone ● 创建当前 Object 的浅表副本。(继承自 Object。)Next ● 已重载。返回随机数。NextBytes ● 用随机数填充指定字节数组的元素。NextDouble ● 返回一个介于 0.0 和 1.0 之间的随机数。Sample ● 返回一个介于 0.0 和 1.0 之间的随机数。ToString ● 返回表示当前 Object 的 String。(继承自 Object。)用 C# 生成不重复的随机数来源:中国IT实验室收集整理 2008-4-2我们可以使用两种方式初始化一个随机数发生器:第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:Random ro = new Random();第二种方法可以指定一个int型参数作为随机种子:int iSeed=10;Random ro = new Random(10);long tick = DateTime.Now.Ticks;Random ran = new Random((int)(tick 0xffffffffL) | (int) (tick 32));这样可以保证99%不是一样。之后,我们就可以使用这个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();但是用Random类生成题号,会出现重复,特别是在数量较小的题目中要生成不重复的的题目是很难的。参考了网上的一些方法,找到两类解决
您可能关注的文档
最近下载
- 部编版二年级语文上册《葡萄沟》-优质课件.pptx VIP
- 污水处理厂运营技术培训教材.ppt VIP
- 诊断学单词英汉对照.pdf VIP
- 期中质量评估 (含答案) 2025-2026学年物理人教版(2024)九年级全一册.docx VIP
- 建立师德师风长效机制 .pdf VIP
- 2025江西吉安市城市建设投资开发有限公司附下属子公司招聘6人笔试参考题库附答案解析.docx VIP
- 《高速单模关系网卡HS-NCM-SF资料(英文版)》-诺帝菲尔.pdf VIP
- 《药品委托生产监督管理规定》(起实施).pdf VIP
- 11.化工原理 固体干燥 题目(含答案).doc VIP
- 自考05722公共经济学密训高频知识汇总.pdf VIP
文档评论(0)