随机种子
计算机术语
随机种子(Random Seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为
初始条件
的随机数。一般计算机的
随机数
都是
伪随机数
,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。
计算方法
一般种子可以以当前的系统时间,这是完全随机的
算法1:
平方取中法
。
(1)将种子设为X0,并mod 10000得到4位数
(2)将它平方得到一个8位数(不足8位时前面补0)
(3)取中间的4位数可得到下一个4位
随机数
X1
(4)重复1-3步,即可产生多个随机数
这个算法的一个主要缺点是最终它会退化成0,不能继续产生随机数。
算法2:
线性同余法
(1)将种子设为X0,
(2)用一个算法X(n+1)=(a*X(n)+b) mod c产生X(n+1)
一般将c取得很大,可产生0到c-1之间的
伪随机数
该算法的一个缺点是会出现循环。
在
windows
平台下,可以考虑将如下参数作为影响种子的因素。
影响因素
⒈
GetTickCount
系统启动以来的嘀嗒时间
说明:该时间与系统
运行时长
相关,
⒉
GetCurrentProcessId
当前进程Id号
说明:该Id与系统
启动进程
数量及次序有关,一般
波动范围
较小。
⒊
GetCurrentProcess
当前进程句柄
说明:该句柄实质就是
内存地址
,但每次进程启动时地址值是不确定的。
⒋
GetProcessTimes
进程时间参数
说明:
⒌GetCurrentThreadId
当前
线程
Id号
⒍
GetCurrentThread
当前线程句柄
⒎GetThreadTimes
线程时间参数
⒏GetCurrentHwProfile
Profile
配置文件
⒐
GetSysColor
系统Color
⒑
GetSystemInfo
系统信息
⒒GetSystemPowerStatus
电源状态
⒓GetKeyboardState
键盘状态
⒔GlobalMemoryStatus
内存状态
⒕time
当前时间 秒
⒖GUID
各硬件设备GUID
⒗MAC
网卡mac
⒘
CPUID
CPU
Id号
⒙声卡录音噪音
该参量与环境相关
⒚用户键盘间隔时间
该参量与用户习惯相关
其次,尽
最大可能
增加这些因素的维度。这里说的维度是指
种子结果与因素之间的关联程度。一般使用
hash函数
对多个
因素进行
哈希运算
。这样得到的种子具有较强的散列特性。
通过以上技术手段得到的种子产生的
伪随机数
是具有较好
统计特性
的,它不依赖于某一台机器,某一时刻,某一方法,
而是复杂多变、让人捉摸不透难于重现的。
参考资料
最新修订时间:2024-02-09 11:42
条目作者
小编
资深百科编辑
目录
概述
计算方法
参考资料
Copyright©2024
闽ICP备2024072939号-1