验证对Random的两个猜想
猜想1:Random.Next()产生的随机数不会有重复。
猜想2:大量级执行Random.Next(int i)分布在各个数值上的概率是均匀的。
验证猜想1 /*如果Random.Next()产生的随机数不存在重复,那么_CunFangSuiJiShuDeList.Count应该等于执行总次数*/ List<int> _ZhiXingCiShuList = new List<int>();
_ZhiXingCiShuList.Add();//一百
_ZhiXingCiShuList.Add();//一千
_ZhiXingCiShuList.Add();//一万
_ZhiXingCiShuList.Add();//十万
_ZhiXingCiShuList.Add();//一百万 StringBuilder _StringBuilder = new StringBuilder();
foreach (int key in _ZhiXingCiShuList)
{
List<int> _CunFangSuiJiShuDeList = new List<int>(); Random _Random = new Random();
for (int i = ; i < key; i++)
{
int _suiJiShu = _Random.Next();
//如果列表不存在该数字,则将该数字加入列表。
if (_CunFangSuiJiShuDeList.Contains(_suiJiShu) == false)
{
_CunFangSuiJiShuDeList.Add(_suiJiShu);
}
} _StringBuilder.AppendFormat("执行{0}次结果:{1}" + Environment.NewLine, key, _CunFangSuiJiShuDeList.Count);
} Console.Write(_StringBuilder.ToString());
Console.ReadLine(); 执行结果截图:
从结果看,执行一百次、一千次及一万次时,不存在重复,执行十万次时,出现一次重复,一百万次出现二百三十二次重复。说明Random.Next()会产生重复随机数,但只有在超过一定量级时才会,并且量级越大重复值个数越多。
验证猜想2 static void Main(string[] args)
{
List<int> _ZhiXingCiShuList = new List<int>();
_ZhiXingCiShuList.Add();//一千
_ZhiXingCiShuList.Add();//一万
_ZhiXingCiShuList.Add();//十万
_ZhiXingCiShuList.Add();//一百万 StringBuilder _StringBuilder = new StringBuilder();
foreach (int key in _ZhiXingCiShuList)
{
Dictionary<int, List<int>> _ZiDian = new Dictionary<int, List<int>>();
for (int i = ; i < ; i++)
{
_ZiDian.Add(i, new List<int>());
} Random _Random = new Random();
for (int i = ; i < key; i++)
{
int _suiJiShu = _Random.Next();
_ZiDian[_suiJiShu].Add(_suiJiShu);
} _StringBuilder.AppendFormat("执行{0}次数值分布:" + Environment.NewLine, key);
foreach (KeyValuePair<int, List<int>> ZiDianKey in _ZiDian)
{
_StringBuilder.AppendFormat("{0}:{1}" + Environment.NewLine, ZiDianKey.Key, ZiDianKey.Value.Count);
}
_StringBuilder.Append(Environment.NewLine);
} Console.Write(_StringBuilder.ToString());
Console.ReadLine();
} 执行结果截图:
猜想成立,分布在各个数值上的概率是均匀的。
写作时间:2018-11-09
=====================================================================================
本文只代表本人的见解,可能存在错误,仅用于技术交流。如果你喜欢该文,可以扫下面的二维码打赏我(打赏敬请备注“博客园打赏”五字)。
验证对Random的两个猜想的更多相关文章
- webform中的验证控件及两个应用技巧
一.非空验证--RequiredFiledValidator <一>属性: ErrorMessage--验证出错后的提示信息 ControlToValidate--要验证的控件的ID Di ...
- 总结Ajax验证注册功能的两种方式
方法一:使用jqueryForm插件提交表单注册 ①首先引入jquery和jqueryForm插件 <script type="text/javascript" src=&q ...
- 使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool数组为正即为反,为反即为正)
---恢复内容开始--- 1. k_fold = KFold(n_split, shuffle) 构造KFold的索引切割器 k_fold.split(indices) 对索引进行切割. 参数说明:n ...
- 表单验证:$tablePrefix(定义表前缀);$trueTableName = 'yonghu',找到真实表名(yonghu)表;create($attr,0)两个参数;批量验证(返回数组);ajax+动态验证表单
*$tablePrefix是定义在Model中的,优先级大于配置文件中,如果项目中表前缀全部比如为"a_",并且在配置文件中定义了 'DB_PREFIX'=>'a_' 后期如 ...
- veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况
veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况 续接前几篇文章: 1.GoldenGate配置(一)之单向复制配置 地址:点击打开链接 2.GoldenGate配置( ...
- 两步验证杀手锏:Java 接入 Google 身份验证器实战
两步验证 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹果都建议大家开启两步验证的. Google 的身份验证器一般也是用于登 ...
- 使用KeePass管理两步验证
目录 使用KeePass管理两步验证 两步验证 KeePass中管理两步验证 KeeTrayTOTP插件使用 使用KeePass管理两步验证 文:铁乐与猫 2018-9-9 KeePass 是一款管理 ...
- 你知道怎么使用Google两步验证保护账户安全吗?
目录 为什么我们需要使用它? 对有些人来说,盗取密码比您想象的更简单 什么是Google两步验证? 多一道安全防线 什么是Google Authenticator ? 使用Google两步验证的好处 ...
- ajax+表单验证+验证码生成例子
MainController.class.php <?php namespace AjaxYz\Controller; use Think\Controller; class MainContr ...
随机推荐
- 1197多行事务要求更大的max_binlog_cache_size处理与优化
1197多语句事务要求更大的max_binlog_cache_size报错 binlog_cache_size:为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存,提高记录bi ...
- RabbitMQ系列目录
1.RabbitMQ安装和配置 (高可用集群和延迟队列) 2.AMQP协议介绍 3.RabbitMQ客户端使用(EasyNetQ)
- python函数的参数细节
按"指针"传递 python中变量赋值.参数传递都是通过"指针"拷贝的方式进行的.除了按"指针"拷贝,还有一种按值拷贝的方式,关于按值.按指 ...
- [转]从minio中读取文件流进行下载文件
本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678 一.获取Minio连接 public static String ...
- SVN、CVS、VSS区别
废话不多说,撸起袖子敲黑板 !~~ #首先向大家简要描述一下SVN与CVS.VSS的介绍与对比: 介绍: 三种都是版本控制软件, 多数用于源代码管理1.CVS(Concurrent Version S ...
- vb.net 與 SQLite連線
Dim ModuleSql As String Dim n As Integer 'SQLite連線Dim connSQLite As New Data.SQLite.SQLiteConnection ...
- MySql常用 join 详解
虽然这类资料比较多....我觉得还是有必要记下来,新手可以看看吧...老司机可以一眼飘过那... 常用SQL JOINS方式 1.SELECT select_list FROM TABLEA A LE ...
- 为什么redis是单线程的?速度还这么快
为什么说Redis是单线程的? 为什么redis是单线程的?速度还这么快
- JVM相关知识
Java虚拟机学习分享最近主要在学习JVM相关知识,-知识主要来源<深入理解JAVA虚拟机>,深有感触,结合自己的理解,整理出一些经验,由于篇幅较长,就把链接帖出来,希望对大家有所帮助: ...
- 在html中使用特殊字体
目的:一首诗,要求从右往左读,垂直排列,类似古文 效果图: html内容: <!doctype html><html lang="en"><head& ...