前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CODESYS中如何产生随机数??

CODESYS中如何产生随机数??

作者头像
Hello工控
发布2024-06-25 18:50:25
970
发布2024-06-25 18:50:25
举报
文章被收录于专栏:Hello工控Hello工控

在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.下图(真伪随机数形成的图)直观说明,如果数据够多的情况下,伪随机数的产生是有规律的。

也就是说,只要给出足够多的伪随机数数据,是有可能逆推产生随机数的算法的。

上述只是简单的说明,详尽的内容大家自行网上搜寻,欢迎各位探讨。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档