Random类

构造函数

1) Random random = new Random(); // 无参数构造函数使用系统时钟生成其种子值

然而,系统时钟取值范围有限,因此在小规模计算中,可能无法使用不同的种子值分别调用此构造函数, 这将导致两个random对象生成相同的随机数字序列。

 using System;
using System.Collections.Generic; namespace FirstTest
{
class Program
{
static void Main(string[] args)
{
Random random1 = new Random();
List<int> list1 = new List<int>();
GetRandomNumbers(random1, list1);
Console.WriteLine("random1对象使用默认构造函数生成的随机数序列: ");
PrintList(list1); Random random2 = new Random();
List<int> list2 = new List<int>();
GetRandomNumbers(random2, list2);
Console.WriteLine("random2对象使用默认构造函数生成的随机数序列: ");
PrintList(list2);
} private static void GetRandomNumbers(Random rand, List<int> list)
{
for (int i = ; i <= ; i++)
{
list.Add(rand.Next(, ));
}
} private static void PrintList(List<int> list)
{
foreach (int element in list)
{
Console.Write ("{0, 5}", element);
}
Console.WriteLine();
}
}
}

运行结果:

2) Random random = new Random(Int32); // 参数化构造函数使用指定的种子值初始化Random类实例,如果指定的是负数,则使用其绝对值作为时间种子。

创建随时间推移,时间种子取值范围大的 Random 对象,以确保生成多个Random对象时,彼此间的随机数序列不同。

  • 通常情况下使用计时周期数(Ticks)作为时间种子:

Random random = new Random((int)DateTime.Now.Ticks);

运行结果:

  • 或者,通过加密随机数生成器(RNG)生成时间种子:
 Random random = new Random(GetRandomSeed());

 static int GetRandomSeed()
{
byte[] bytes = new byte[];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, );
}

运行结果:

【C#】Random类中构造方法、时间种子与随机数序列的关系的更多相关文章

  1. Hibernate jpa 在实体类中对于时间的注解

    在时间类型DATE 属性上添加一个 @Temporal(TemporalType.DATE)(精确到年月日)@Temporal(TemporalType.TIME)(精确到时分秒)@Temporal( ...

  2. java Random类和Math.Rondom

      Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取 ...

  3. java基础之Random类

    Random类 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed), 在种子数的基础上进行一定的变换,从而产生需要的随机数字. 相同种子 ...

  4. Java api 入门教程 之 JAVA的Random类

    在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...

  5. JAVA的Random类[转]

    在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...

  6. Random类(java.util)

    转自 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字. 相同种子数的Rand ...

  7. [转] JAVA的Random类

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  8. tips:Java的Random类和Random函数

    tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...

  9. Random 类生成随机数

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

随机推荐

  1. Nginx的基本使用和配置

    2.1什么是Nginx Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方 ...

  2. 分布式任务调度平台 → XXL-JOB 实战

    开心一刻 老师:谁知道鞭炮用英语怎么说? 甲:老师!老师!我知道,鞭炮的英文是pilipala. 老师:那闪电呢? 乙:kucha kucha 老师:那舞狮呢? 丙:dong dong qiang 老 ...

  3. iOS CALayer 简单介绍

    https://www.jianshu.com/p/09f4e36afd66 什么是CALayer: 总结:能看到的都是uiview,uiview能显示在屏幕上是因为它内部的一个层calyer层. 在 ...

  4. 小伙子自从学会用Python爬取岛国“动作”电影,身体一天不如一天

    在互联网的世界里,正确的使用VPN看看外面的世界,多了解了解世界的发展.肉身翻墙后,感受一下外面的肮脏世界.墙内的朋友叫苦不迭,由于某些原因,VPN能用的越来越少.上周我的好朋友狗子和我哭诉说自己常用 ...

  5. 家庭记账本APP开发准备(二)

    今天学习了选项卡,为记账本的分类做了准备.主登录界面进行了优化,但仍未实现各个组件之间的跳转. 选项卡 activity_main.xml <?xml version="1.0&quo ...

  6. 比PS还好用!Python 20行代码批量抠图

    你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...

  7. 解决 SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp的问题

    连接数据库时 设置:zeroDateTimeBehavior=convertToNull

  8. Vulhub Docker环境部署

    1:安装Linux 2:安装Docker : curl -s https://get.docker.com/ | sh 3:安装Docker-compose curl -s https://boots ...

  9. java 封装与this关键字

    一 封装 1.封装的概述 封装,它也是面向对象思想的特征之一.面向对象共有三个特征:封装,继承,多态. 封装表现: 1.方法就是一个最基本封装体. 2.类其实也是一个封装体. 从以上两点得出结论,封装 ...

  10. Centos+Nginx部署Vue项目

    1.项目打包生成dist文件夹 在项目根目录下打开cmd窗口,输入命令 npm run build //生成dist文件夹 2.将dist文件夹上传到centos7 使用scp命令或者用远程连接工具将 ...