猜想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的两个猜想的更多相关文章

  1. webform中的验证控件及两个应用技巧

    一.非空验证--RequiredFiledValidator <一>属性: ErrorMessage--验证出错后的提示信息 ControlToValidate--要验证的控件的ID Di ...

  2. 总结Ajax验证注册功能的两种方式

    方法一:使用jqueryForm插件提交表单注册 ①首先引入jquery和jqueryForm插件 <script type="text/javascript" src=&q ...

  3. 使用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 ...

  4. 表单验证:$tablePrefix(定义表前缀);$trueTableName = 'yonghu',找到真实表名(yonghu)表;create($attr,0)两个参数;批量验证(返回数组);ajax+动态验证表单

    *$tablePrefix是定义在Model中的,优先级大于配置文件中,如果项目中表前缀全部比如为"a_",并且在配置文件中定义了 'DB_PREFIX'=>'a_' 后期如 ...

  5. veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况

    veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况 续接前几篇文章: 1.GoldenGate配置(一)之单向复制配置 地址:点击打开链接 2.GoldenGate配置( ...

  6. 两步验证杀手锏:Java 接入 Google 身份验证器实战

    两步验证 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹果都建议大家开启两步验证的. Google 的身份验证器一般也是用于登 ...

  7. 使用KeePass管理两步验证

    目录 使用KeePass管理两步验证 两步验证 KeePass中管理两步验证 KeeTrayTOTP插件使用 使用KeePass管理两步验证 文:铁乐与猫 2018-9-9 KeePass 是一款管理 ...

  8. 你知道怎么使用Google两步验证保护账户安全吗?

    目录 为什么我们需要使用它? 对有些人来说,盗取密码比您想象的更简单 什么是Google两步验证? 多一道安全防线 什么是Google Authenticator ? 使用Google两步验证的好处 ...

  9. ajax+表单验证+验证码生成例子

    MainController.class.php <?php namespace AjaxYz\Controller; use Think\Controller; class MainContr ...

随机推荐

  1. 静态和实例方法区别-java

    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...

  2. vue路由对不同界面进行传参及跳转的总结

    最近在做一个公众号的商城项目,主要用的VUE+MUI,其实今天这个点对于有过项目经验的前端工作者来说是最基础的,但也是必须要掌握的,今天小编主要是记录下传参和跳转的一些总结(仅供参考). 首先我们先上 ...

  3. 【EF6学习笔记】(三)排序、过滤查询及分页

    本篇原文地址:Sorting, Filtering, and Paging 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根据自己的理解做了 ...

  4. 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  5. Java——this关键字

    前言 this关键字属于Java中比较复杂的关键字之一,若是学习过C++或者其他的一些面向对象语言也会遇到this这个关键字并且都会看到this的含义就是表示当前对象.什么叫做表示当前对象?this在 ...

  6. 开源项目filepond的独立自由之路:城市套路深

    微信原文更清晰:https://mp.weixin.qq.com/s/dv39XvvDNlDqvSgrhN2f7A 最近一直在做一个有关独立开发者友链联盟的插件项目,在做到上传头像时,满网络找最好的头 ...

  7. Tesseract 引擎翻译

    Tesseract 引擎翻译 Category: 图像识别 Last Edited: Sep 17, 2018 10:29 AM Tags: tesseract,字符识别,翻译 1.英文原文(中文翻译 ...

  8. [android] 短信的广播接收者

    比较重要的一个广播事件,短信 界面布局,比如播放视频,默认是横屏全屏的,清单文件中进行设置, 在<activity/>节点设置屏幕朝向属性,android:screenOrientatio ...

  9. [android] 隐式意图激活另外一个activity

    随着api的升级,系统的很多应用包名和类名都改掉了,所以很多时候,打开系统应用的时候会报错,隐式意图就是解决组件之间松耦合,描述动作行为 获取Intent对象,通过new出来 调用Intent对象的s ...

  10. 【Linux命令】grep命令

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...