C# 生成随机数重复问题
今天做测试,在一个循环里面给实体属性赋随机值,然后生成一个实体集合,突然发现生成的实体集合中的所有实体相应属性值都是一样的,调试时却又发现值并不是重复的,度娘以后发现了问题——Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,系统默认是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如果计算机运行速度很快(像小循环,执行速度太快了),如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数,因为伪随机的数字,在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。
解决办法有一般有2种:
1、延时的办法。
采用Thread.Sleep(100);//括号中给毫秒数
2、提高随机数不重复概率的种子生成方法,在New Random(SeedParam)时候保证SeedParam是唯一的
DEMO:
1.未作处理的随机(出现了重复的现象)
for (int i = 0; i < 5; i++){Random r = new Random();int num = r.Next(10000, 99999);//随机生成一个5位整数string tempStr = string.Empty;for (int j = 0; j < 4; j++){r = new Random();int x = r.Next(65, 90);//65-90代表A-Z的ASCII值 char a = (char)x;tempStr += a.ToString();}Console.WriteLine("num" + i.ToString() + "的值是:" + num);Console.WriteLine("tempStr" + i.ToString() + "的值是:" + tempStr);}
执行结果如下:
2.利用提高随机种子进行随机生成(未出现重复现象)
for (int i = 0; i < 5; i++){Random r = new Random(int.Parse(DateTime.Now.ToString("HHmmssfff")) + i);int num = r.Next(10000, 99999);//随机生成一个5位整数string tempStr = string.Empty;for (int j = 0; j < 4; j++){r = new Random(int.Parse(DateTime.Now.ToString("HHmmssfff")) + i + j);int x = r.Next(65, 90);//65-90代表A-Z的ASCII值 char a = (char)x;tempStr += a.ToString();}Console.WriteLine("num" + i.ToString() + "的值是:" + num);Console.WriteLine("tempStr" + i.ToString() + "的值是:" + tempStr);}
执行结果如下:
转载于:https://www.cnblogs.com/programsky/p/5408697.html
C# 生成随机数重复问题相关推荐
- C# Random循环生成随机数重复问题解决方案
C# Random循环生成随机数重复问题解决方案 参考文章: (1)C# Random循环生成随机数重复问题解决方案 (2)https://www.cnblogs.com/duanjt/p/70641 ...
- iOS 生成随机数 重复 不重复
//编程的时候,有三条任选执行路径,都会显示一些图片,比如路径1显示的图片是一个人,路径2显示的是两个人,路径3显示任意人数的图片,要求每次进入该页面都不能重复初始的那张图片. 于是我想到了 运用随机 ...
- R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串
R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...
- JAVA生成不重复随机数算法
一个不错的算法,很简单,但有效.不过如果范围比较大,则占用内存大,就不推荐使用了.个人感觉1000个以内的就可以考虑.这东西也许你早就知道了,但我依然惊叹算法的力量. 看代码 import java. ...
- .net中如何生成不重复的随机数
2019独角兽企业重金招聘Python工程师标准>>> .net中生成不重复的随机数的方法 //获取count个不大于maxNumber的整数,所有整数不重复.当然,count必须小 ...
- C#生成不重复的随机数
C#生成不重复的随机数 在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复的题目,在.net Framework中提供了一个专门用来产生随机数 http://www.jbxue.com/tag ...
- java contains_Java基础教程|生成不重复随机数 java
生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...
- php mysql随机数不重复,js生成不重复的随机数
这篇文章主要为大家详细介绍了js生成不重复的随机数,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. JS代码如下: /** * * @param * ...
- [转载][记录]javascript生成不重复的随机数
参考链接:javascript生成不重复的随机数 项目播放视频,是无序的,有上下两个按钮,所以需要生成1,8不重复的随机数数组,如: 7,4,8,6,1,5,3,2 然后再split一次,就是数组了. ...
- 生成不重复的随机数的三种方法
下面我以生成1-10之间的10个不重复的随机数为例介绍生成不重复的随机数的三种方法: 1,通过while循环来实现 通过while循环不停的生成随机数,直到生成一个不重复的为止,这种方法比较容易想 ...
最新文章
- Vue全局路由侦听beforeEach路由守卫附代码使用示例
- 柔性生态布局未来,小鱼易连 2019“深耕视界逐梦小鱼”北京火爆招募
- 元旦特惠!无人机/ROS2/三维重建点云/SLAM/多传感器/相机标定/深度估计等重磅干货教程...
- win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
- 存clob为空的值_给Oracle数据库中CLOB字段插入空值
- javascript createelement_贝程学院:Selenium与 JavaScript
- android-NDK-Opengl
- Kali忘记登录密码——修改root密码
- python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样
- s5pv210——中断实战
- 全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...
- MySQL进阶操作之视图
- 07 ansible 角色roles 整合多个剧本
- 0x07 MySQL 多表查询
- keil5安装STC芯片包
- Vue----组件库
- Unity动态加载资源
- STM32 CubeIDE快速创建工程(图文详解)
- 信息收集之——FOFA网站常用搜索语法
- cocos creator播放声音控制台显示Simulator: jsb: ERROR
热门文章
- python数字图像处理(3):图像像素的访问与裁剪
- Lync Server 2013 实战系列之五:标准版-定义拓扑生成器
- 有关Silverlight ChildWindow组件(子窗体组件)的研究——Silverlight学习笔记(2)...
- load data infile into table 的使用例子
- 解决问题--Maven,IDEA项目External Libraries下只有jdk没有maven依赖
- Elasticsearch 为什么能做到快速检索?秘密在这里!
- 浙大学霸Facebook总部跳楼:永远不要把公司当成“家”
- 华为搜索引擎面世,百度搜索有点危险了!
- 几张图五分钟让你轻松读懂TCP协议(图文并茂)
- 这个教人写出烂代码的项目在 GitHub 上火了...