本类思想:高性能计数器以微妙级累加数值,逢十进位。如果动态的单看数值最后一个数字,一定是在0-9之间不断旋转,就像一个滚动的俄罗斯轮盘,暂停时一定指向其中某一位数字并且指向哪个数字是不可预测的,当暂停次数足够多时,分布在各个数值上的概率无限接近。
using System.Runtime.InteropServices;namespace SuiJiShu{ ////// 随机数生成器 /// public class SuiJiShuShengChengQi { //获取高性能计数器数值 [DllImport("kernel32.dll")] extern static short QueryPerformanceCounter(ref long x); ////// 十以内随机数 /// ///public int ShiYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 1)); } /// /// 百以内随机数 /// ///public int BaiYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 2)); } /// /// 千以内随机数 /// ///public int QianYiNeiSuiJiShu() { long _dangQianJiShuQiZhi = 0; QueryPerformanceCounter(ref _dangQianJiShuQiZhi); string _dangQianJiShuQiZhiString = _dangQianJiShuQiZhi.ToString(); return int.Parse(_dangQianJiShuQiZhiString.Remove(0, _dangQianJiShuQiZhiString.Length - 3)); } }}
//ShiYiNeiSuiJiShu运行一百万次数值分布:0:978721:1000822:1002373:998954:1005565:999956:1003847:999288:1003399:100712//测试代码Dictionary