猜想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. 基于vue技术的企业移动办公系统的设计与实现

    如何打包: http://www.cnblogs.com/smilehuanxiao/p/7693858.html http://www.cnblogs.com/1314y/p/6207153.htm ...

  2. Java设计模式之《模板模式》及使用场景

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9558825.html 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框 ...

  3. bash内置命令mapfile:读取文件内容到数组

    bash提供了两个内置命令:readarray和mapfile,它们是同义词.它们的作用是从标准输入读取一行行的数据,然后每一行都赋值给一个数组的各元素.显然,在shell编程中更常用的是从文件.从管 ...

  4. Go基础系列:struct和嵌套struct

    struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一. 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用 ...

  5. Python图像处理之图片文字识别(OCR)

    OCR与Tesseract介绍   将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同 ...

  6. C#开源框架(转载)

    Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Li ...

  7. Word转MD文件

    直接把网页的内容复制,丢进下面的网站,转为html格式,复制html代码文本 WordHtml 把代码文本放在这里 Html转MD

  8. SQL多表联合查询(交叉连接,内连接,外连接)

    连接查询:     交叉连接:   交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据航数乘以第二个表中符合,查询条件的数据行数,例如department ...

  9. 异常:android.os.NetworkOnMainThreadException

    场景: 安卓开发时在主线程访问网络解决: 将访问网络的代码使用Thread操作 Handler handler = new Handler(){ @Override public void handl ...

  10. Django---ORM中的锁和事务

    ---恢复内容开始--- 一 锁 行级锁 select_for_update(nowait=False,skip_locked=False)  #注意必须用在事务里面,至于如何开启事务,往后看 返回一 ...