今天做测试,在一个循环里面给实体属性赋随机值,然后生成一个实体集合,突然发现生成的实体集合中的所有实体相应属性值都是一样的,调试时却又发现值并不是重复的,度娘以后发现了问题——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# 生成随机数重复问题相关推荐

  1. C# Random循环生成随机数重复问题解决方案

    C# Random循环生成随机数重复问题解决方案 参考文章: (1)C# Random循环生成随机数重复问题解决方案 (2)https://www.cnblogs.com/duanjt/p/70641 ...

  2. iOS 生成随机数 重复 不重复

    //编程的时候,有三条任选执行路径,都会显示一些图片,比如路径1显示的图片是一个人,路径2显示的是两个人,路径3显示任意人数的图片,要求每次进入该页面都不能重复初始的那张图片. 于是我想到了 运用随机 ...

  3. R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串

    R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...

  4. JAVA生成不重复随机数算法

    一个不错的算法,很简单,但有效.不过如果范围比较大,则占用内存大,就不推荐使用了.个人感觉1000个以内的就可以考虑.这东西也许你早就知道了,但我依然惊叹算法的力量. 看代码 import java. ...

  5. .net中如何生成不重复的随机数

    2019独角兽企业重金招聘Python工程师标准>>> .net中生成不重复的随机数的方法 //获取count个不大于maxNumber的整数,所有整数不重复.当然,count必须小 ...

  6. C#生成不重复的随机数

    C#生成不重复的随机数 在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复的题目,在.net Framework中提供了一个专门用来产生随机数 http://www.jbxue.com/tag ...

  7. java contains_Java基础教程|生成不重复随机数 java

    生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...

  8. php mysql随机数不重复,js生成不重复的随机数

    这篇文章主要为大家详细介绍了js生成不重复的随机数,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. JS代码如下: /** * * @param * ...

  9. [转载][记录]javascript生成不重复的随机数

    参考链接:javascript生成不重复的随机数 项目播放视频,是无序的,有上下两个按钮,所以需要生成1,8不重复的随机数数组,如: 7,4,8,6,1,5,3,2 然后再split一次,就是数组了. ...

  10. 生成不重复的随机数的三种方法

    下面我以生成1-10之间的10个不重复的随机数为例介绍生成不重复的随机数的三种方法: 1,通过while循环来实现   通过while循环不停的生成随机数,直到生成一个不重复的为止,这种方法比较容易想 ...

最新文章

  1. Vue全局路由侦听beforeEach路由守卫附代码使用示例
  2. 柔性生态布局未来,小鱼易连 2019“深耕视界逐梦小鱼”北京火爆招募
  3. 元旦特惠!无人机/ROS2/三维重建点云/SLAM/多传感器/相机标定/深度估计等重磅干货教程...
  4. win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
  5. 存clob为空的值_给Oracle数据库中CLOB字段插入空值
  6. javascript createelement_贝程学院:Selenium与 JavaScript
  7. android-NDK-Opengl
  8. Kali忘记登录密码——修改root密码
  9. python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样
  10. s5pv210——中断实战
  11. 全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...
  12. MySQL进阶操作之视图
  13. 07 ansible 角色roles 整合多个剧本
  14. 0x07 MySQL 多表查询
  15. keil5安装STC芯片包
  16. Vue----组件库
  17. Unity动态加载资源
  18. STM32 CubeIDE快速创建工程(图文详解)
  19. 信息收集之——FOFA网站常用搜索语法
  20. cocos creator播放声音控制台显示Simulator: jsb: ERROR

热门文章

  1. python数字图像处理(3):图像像素的访问与裁剪
  2. Lync Server 2013 实战系列之五:标准版-定义拓扑生成器
  3. 有关Silverlight ChildWindow组件(子窗体组件)的研究——Silverlight学习笔记(2)...
  4. load data infile into table 的使用例子
  5. 解决问题--Maven,IDEA项目External Libraries下只有jdk没有maven依赖
  6. Elasticsearch 为什么能做到快速检索?秘密在这里!
  7. 浙大学霸Facebook总部跳楼:永远不要把公司当成“家”
  8. 华为搜索引擎面世,百度搜索有点危险了!
  9. 几张图五分钟让你轻松读懂TCP协议(图文并茂)
  10. 这个教人写出烂代码的项目在 GitHub 上火了...