当前位置:
首页 > Python基础教程 >
-
C#教程之一个随机数类
本类思想:高性能计数器以微妙级累加数值,逢十进位。如果动态的单看数值最后一个数字,一定是在0-9之间不断旋转,就像一个滚动的俄罗斯轮盘,暂停时一定指向其中某一位数字并且指向哪个数字是不可预测的,当暂停次数足够多时,分布在各个数值上的概率无限接近。
using System.Runtime.InteropServices; namespace SuiJiShu { /// <summary> /// 随机数生成器 /// </summary> public class SuiJiShuShengChengQi { //获取高性能计数器数值 [DllImport("kernel32.dll")] extern static short QueryPerformanceCounter(ref long x); /// <summary> /// 十以内随机数 /// </summary> /// <returns></returns> public int ShiYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 1)); } /// <summary> /// 百以内随机数 /// </summary> /// <returns></returns> public int BaiYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 2)); } /// <summary> /// 千以内随机数 /// </summary> /// <returns></returns> public int QianYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 3)); } } }
//ShiYiNeiSuiJiShu运行一百万次数值分布: 0:97872 1:100082 2:100237 3:99895 4:100556 5:99995 6:100384 7:99928 8:100339 9:100712 //测试代码 Dictionary<int, List<int>> _tongJiZiDian = new Dictionary<int, List<int>>(); for (int i = 0; i < 10; i++) { _tongJiZiDian.Add(i, new List<int>()); } SuiJiShuShengChengQi _SuiJiShuShengChengQi = new SuiJiShuShengChengQi(); for (int i = 0; i < 1000000; i++) { int _suiJiShu = _SuiJiShuShengChengQi.ShiYiNeiSuiJiShu(); _tongJiZiDian[_suiJiShu].Add(_suiJiShu); } StringBuilder _sss = new StringBuilder(); foreach (KeyValuePair<int, List<int>> key in _tongJiZiDian) { _sss.Append(key.Key.ToString() + ":" + key.Value.Count.ToString() + "\r\n"); }
写作时间:2018-11-07
=====================================================================================
本文只代表本人的见解,可能存在错误,仅用于技术交流。如果你喜欢该文,可以扫下面的二维码打赏我(打赏敬请备注“博客园打赏”五字)。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式