随机种子

简介

编辑
一般计算机的 随机数都是 伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停 迭代产生随机数。

方法

编辑
一般种子可以以当前的系统时间,这是完全随机的
算法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函数对多个
因素进行哈希运算。这样得到的种子具有较强的散列特性。
通过以上技术手段得到的种子产生的 伪随机数是具有较好
统计特性的,它不依赖于某一台机器,某一时刻,某一方法,
而是复杂多变、让人捉摸不透难于重现的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CodeSys是一种用于嵌入式系统开发的编程工具,它提供了丰富的功能和库来简化编程任务。在CodeSys中,随机数生成是一个常见的需求,通过使用随机种子,可以实现产生不同的随机数序列。 随机种子是一个用于生成随机数的起始值。在CodeSys中,可以使用函数RandSeed设置随机种子。这个函数需要一个整数作为参数,通常可以使用系统时间作为随机种子,这样可以确保每次执行程序时都能获取到不同的随机数序列。 使用随机种子生成的随机数序列具有可预测性,即在相同的随机种子下生成的随机数序列是相同的。因此,如果需要生成不同的随机数序列,可以通过在每次执行程序时使用不同的随机种子,例如使用每次执行时的系统时间或者其他随机数作为种子。 在使用随机数时,可以使用函数Random来生成一个随机数。这个函数可以指定生成随机数的范围,例如Random(1, 100)可以生成1到100之间的随机数。 总之,CodeSys提供了随机数生成功能,并且通过设置随机种子可以实现产生不同的随机数序列。使用随机种子可以确保每次执行程序时都能获取到不同的随机数序列。 ### 回答2: CoDeSys是一种广泛使用的自动化工程软件,常用于工业自动化控制系统中。在CoDeSys中,随机种子是通过产生随机数的算法种子来设定的。 随机种子在随机数生成中起着重要作用。当需要产生随机数时,计算机实际上是通过一系列的算法来计算的,这个算法是基于随机种子的。随机种子相当于给定一个起始点,然后通过算法来生成随机数序列。如果种子固定不变,那么每次生成的随机数序列都是一样的。 在CoDeSys中,可以通过内置函数RAND和SRAND来设置随机种子。RAND函数用于产生一个随机数,而SRAND函数用于设置随机种子。通过改变随机种子可以得到不同的随机数序列。 为什么要使用随机种子呢?使用随机种子可以使得随机数具有不可预测性和唯一性。在某些应用中,我们需要使用随机数进行模拟或者生成密码等操作。如果随机数是可预测的,就会导致系统易受攻击。而通过使用随机种子来生成随机数,可以增加系统的安全性和可靠性。 在CoDeSys中,通过设置不同的随机种子可以产生不同的随机数序列,从而提高系统的灵活性和安全性。因此,在使用CoDeSys进行自动化工程开发中,合理设置随机种子是很重要的。 ### 回答3: CodeSys是一种常用的PLC(可编程逻辑控制器)编程软件。在CodeSys中,随机种子是一个用于生成伪随机数的参数。随机数在许多应用中都很有用,例如模拟实验、游戏设计等。 在CodeSys中,可以使用一个称为“SRand”的函数来设置随机种子。这个函数通常使用一个整数作为参数,该整数将决定从随机数序列中选择的起始点,从而影响生成的随机数序列。如果不设置随机种子,将使用系统时间作为默认种子。 例如,如果我们在CodeSys中使用SRand(123)来设置随机种子,随后调用随机数函数时,将会生成一系列与当前时间无关的随机数。而每次程序重新运行,如果使用相同的随机种子,将会生成相同的随机数序列。 使用随机种子可以让程序的运行结果变得更加可预测。通过设置相同的种子,可以保证在每次运行时得到相同的随机数序列,从而便于调试和测试。另外,在一些需要生成伪随机数的应用中,可以根据用户需求选择不同的种子,从而实现不同的结果。 综上所述,CodeSys中的随机种子是生成伪随机数的参数。通过设置不同的种子,可以获得不同的随机数序列。设置相同的种子可以保证在每次运行时得到相同的随机数序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值