在CODESYS程序开发中,可能需要一些随机数来进行仿真模拟、小游戏开发或者加密等应用,我们这里和大家共同探讨随机数。
两种方式
方式一:自定义函数实现 自己根据随机数的定义和产生原理来自定义FUNCTION。根据网络的资源,主要有以下几种(具体不做介绍,大家自行搜索):
方式二:CODESYS自带的库或者第三方库函数实现 利用CODESYS自带的库或者第三方库函数直接调用。这里我们重点讨论下。 CODESYS库:SM3_Shared,4.9.0.0
关于库的添加和使用具体方法可以参考入门课程介绍。
添加完成后,可以选择RndI和RndI_Range这两个函数功能块来获取随机数。区别主要在于RndI_Range可以定义随机数产生范围中的最小值和最大值,而RndI只能在0和最大值间产生。
OSCAT_Basic第三方库
关于这个库的说明和下载链接参考往期文章: OSCAT自动化技术开源社区源代码分享 这个库比自带的SM3_Shared区别在于,产生的随机数类型不同,RDM返回的值是Real类型,而且是FUCTION,调用更加方便。具体的产生随机数的源代码也可以清楚了解:
伪随机数
我们注意到上述函数的说明中出现的pseudo-random,翻译过来就是伪随机数。对于第一次了解这个概念,我们也搜索到相关的知识,分享如下:
针对伪随机数,相关的总结如下:
1.什么是随机数?通俗说法就是随机产生一个数,这个数预先不能计算出来,并且每个数字出现的概率是一样的。随机数必须满足以下两个条件:
2.真伪随机数目前学界划分真伪随机数的方式非常简单,一句话就能说明白,凡是用一定的算法使用程序生成的都是伪随机数,通过物理现象产生的随机数才是真随机数。
3.下图(真伪随机数形成的图)直观说明,如果数据够多的情况下,伪随机数的产生是有规律的。
也就是说,只要给出足够多的伪随机数数据,是有可能逆推产生随机数的算法的。 上述只是简单的说明,详尽的内容大家自行网上搜寻,欢迎各位探讨。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |