Random生成随机数重复的问题

一、Random生成随机数重复的问题

  Random在生成随机数的时候,如果生成的时间非常短,那么很可能会出现生成的随机数重复的问题。

  示例:

       static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                Random random = new Random();
                Console.WriteLine(random.Next(1, 100));
            }
            Console.ReadKey();
        }

  输出如下:

  

  解决方案:只使用一个Random类。

        static void Main(string[] args)
        {
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(random.Next(1, 100));
            }
            Console.ReadKey();
        }

  由此可推出,将Random设为静态的,或者单例封装一下就没问题了。

  

  

Random生成随机数重复的问题,布布扣,bubuko.com

时间: 2024-10-24 06:35:44

Random生成随机数重复的问题的相关文章

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

C# Random循环生成随机数重复问题解决方案1.当我们通过Random生成随机数时,习惯的写法如下: int a=new Random().Next(0,100); 然后生成一个数据数没有任何问题,但是代码修改如下 for(int i=0;i<1000;i++){ Console.WriteLine(new Random().Next(0,100)); } 问题:你会发现生成的随机数居然完全一样.肿么办呢? 2.解决:之所以会出现这样的情况是因为C#生成随机数和计算的时间有关系,如果生成太快

C# Random 生成不重复随机数

Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数

【转载】python 模块 - random生成随机数模块

http://blog.csdn.net/pipisorry/article/details/39086463 随机数种子 要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成的随机数字是完全相同的: random.seed(1) 这样random.randint(0,6, (4,5))每次都产生一样的4*5的随机矩阵 关于种子的介绍可参见[Java - 常用函数Random函数] Python标准库random模块 (生成随机数模块) random.random() r

Random 生成随机数

Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字. 相同种子数的Random对象,相同次数生成的随机数字是完全相同的.也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同.这点在生成多个随机数字时需要特别注意. 下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程

Python3使用random生成随机数

本文介绍使用Python3中的random库生成随机数.随机小数.随机序列.随机字符串以及扑克洗牌等方法. 一.生成随机浮点数或小数 1.#生成0-1之间的浮点数 import random rnd = random.random() print(rnd) 返回 0.4116634571675989 2.#生成0-1之间的浮点数,2位精度 rnd = round(random.random(),2) print(rnd) 返回 0.86 3.#生成[1,100]之间的浮点数: rnd = ran

Random 生成不重复的随机数

Hashtable ha = new Hashtable(); Random rm = new Random(); for (int i = 0; ha.Count < 4; i++) { int number = rm.Next(1,10); if (!ha.ContainsValue(number)) { ha.Add(number, number); Console.WriteLine(number.ToString()); } }

C# 生成随机数重复问题

今天做测试,在一个循环里面给实体属性赋随机值,然后生成一个实体集合,突然发现生成的实体集合中的所有实体相应属性值都是一样的,调试时却又发现值并不是重复的,度娘以后发现了问题——Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,系统默认是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如

python学习—random生成随机数

random.random()---随机生成0到1的小数 random.randint(x,y)---随机生成x到y的整数,闭区间,包含两端 random.uniform(a,b)---随机生成a到b的浮点数,闭区间,包含两端 使用随机数模块生成一个5到10之间的浮点数,输出到控制台import randoma1 = random.random()a2 = random.randint(5, 9)number = a2 + a1print(number) # 扩展:实现方式:random.uni

Random() 插入数据重复的问题

今天在写一个小测试用例时,想在数据库插入一些数据.造数据时用到了Random函数,之前没有注意到这个问题,看到“Random生成随机数重复的问题”才注意到自己插入的数据有重复. for (int i = 0; i < 10000; i++) { Random ro = new Random(); Console.WriteLine(ro.Next(1000)); } 验证了下,果然是会出现“如果生成的时间非常短,那么很可能会出现生成的随机数重复的问题.”,做个记录. 原文地址:https://w