关于C#的随机数
一直都知道random随机数可能出现相同的情况,但是一直没具体看为什么,网上一看又是一大堆例子给你出来,一点也不清晰,今天看msdn记录一下,msdn是讲的真的清楚.
实例化随机数生成器
通过向Random类构造函数提供种子值(伪随机数生成算法的起始值)来实例化随机数生成器。 可以显式或隐式提供种子值:
Random(Int32)构造函数使用您提供的显式种子值。
Random()构造函数使用系统时钟提供种子值。 这是实例化随机数生成器最常见的方法。
如果对单独Random的对象使用相同的种子,则它们将生成相同的随机数字序列。 这对于创建处理随机值的测试套件或用于重放从随机数派生其数据的游戏很有用。 但请注意Random ,在不同版本的 .NET Framework 下运行的进程中的对象可能返回不同序列的随机数字,即使它们是用相同的种子值实例化的,也是如此。
若要生成不同的随机数序列,可以使种子值依赖于时间,从而使用的每个新实例Random生成不同的序列。 参数化Random(Int32)构造函数可以根据Int32当前时间中的计时周期数来获取值,而无参数Random()构造函数使用系统时钟生成其种子值。 ·但是,仅在 .NET Framework 上,由于时钟具有有限的分辨率,因此使用无参数构造函数来Random连续创建不同的对象将创建随机生成相同序列的随机数生成器小数·. 下面的示例演示如何在Random .NET Framework 应用程序中连续实例化的两个对象生成相同的随机数序列。 在大多数 Windows 系统上Random ,在15毫秒内创建的对象有可能具有相同的种子值。
所以想生成随机数,无论用几个random,只要保证
1 你的随机种子不同
2 产生随机数的时间间隔>15ms就能产生随机数
这两个条件满足一个就行
鉴于官方提出多个random会产生额外开销,只建议生成一个randow就好了
总结:想生成随机的一堆数
1 一个random(不必要)
2 产生随机数的间隔>15ms
或者
1 多个ranmdom
2 每个random的种子不一样
关于C#的随机数的更多相关文章
- .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...
- DotNet生成随机数的一些方法
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...
- JavaScript 随机数
JavaScript内置函数random(seed)可以产生[0,1)之间的随机数,若想要生成其它范围的随机数该如何做呢? 生成任意范围的随机数 //生成[100,120)之间的随机数 Math.fl ...
- SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等
在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...
- 随机数(random)
需求 Random rd=new Random(); 需要十以内的随机数 (0---10) System.out.println((int)((rd.nextDouble()*100)/10)); ...
- [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数
Design a data structure that supports all following operations in average O(1) time. insert(val): In ...
- Python 随机数用法
1. random.seed(int) 给随机数对象一个种子值,用于产生随机序列. 对于同一个种子值的输入,之后产生的随机数序列也一样. 通常是把时间秒数等变化值作为种子值,达到每次运行产生的随机系列 ...
- C语言产生标准正态分布或高斯分布随机数
C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...
- C语言基础(11)-随机数发生器
一. rand() rand是一个C语言库函数,功能是生成一个随机数.rand需要一个不同的种子,才能生成不同的随机数. 二. srand(int seed) rand需要一个不同的种子,才能生成不同 ...
- shell 指定范围产生随机数
#/bin/bash echo "---------------产生随机数---------------" read -p "请输入起始数:" a read - ...
随机推荐
- java命令-jstat/ javap
jstat命令对应用程序资源和性能进行实时监控 常用参数列举如下: 1. jstat -class pid 显示加载class的数量.所占空间.所耗时间等信息 2.jstat -compiler pi ...
- bi包
闭包是函数式编程的概念 闭包的定义:由函数极其封闭的自由变量组成的集合体. 其实每一个函数都是一个闭包 特点:函数中嵌套函数. 在返回的时候不仅返回函数本身,而且返回内部函数的值,关键词‘释放’ 闭包 ...
- 21.与重入锁相关联的Condition
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; /** * ...
- Navicat连接MySQL8+时出现2059报错
当我们连接时,会报2059错误 在用navicat连接MySQL8+时会出现2059错误,这是由于新版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还 ...
- mysql 查询表的最大时间 的数据
SELECT * from (SELECT MAX(a.update_date) as q ,a.monitoring_point_id from biz_monitoring_point_recor ...
- CEF的备忘笔记
CEF: Chromium Embeded Framewrok; (Chromium嵌入式框架)可以在PC(Linux,MacOS,Windows)上把Chromium的内核嵌入到应用程序的框架: ...
- 【Shiro】五、Apache Shiro加密
Shiro提供了更好封装,更好使用的加密算法API,可以作为平时使用的一个工具类的预选方案. Shiro的密码学 基本特性 接口驱动,基于POJO 对JCE(Java Cryptography Ext ...
- 关于IDEA的一些问题
关于IDEA的一些问题 快速创建SpringBoot项目传送门:参考网址 创建Maven Web项目(带有webapp文件夹目录的项目)传送门:参考网址
- 洛谷P2602 [ZJOI2010]数字计数(数位dp)
数字计数 题目传送门 解题思路 用\(dp[i][j][k]\)来表示长度为\(i\)且以\(j\)为开头的数里\(k\)出现的次数. 则转移方程式为:\(dp[i][j][k] += \sum_{t ...
- ROS编程: 重要的代码优化知识点记录(1)
订阅多个话题并对其进行同步处理 本小节针对在ROS节点中需要订阅两个及两个以上的话题时,需要保持对这两个话题数据的同步,且需要同时接收数据一起处理然后当做参数传入到另一个函数中: 研究背景:reals ...