久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

西門子SCL編程實例——產(chǎn)生隨機數(shù)的算法

 吳敬銳 2022-09-22 發(fā)布于廣東

今天這篇文章給大家介紹下我編寫的產(chǎn)生隨機數(shù)的函數(shù),。

文章圖片1

函數(shù)FC5006_RandomReal可根據(jù)需要產(chǎn)生一個指定范圍內(nèi)的隨機數(shù),它采用線性同余算法產(chǎn)生隨機數(shù),,其公式如下:

X[n+1]=(a*X[n] +c) % m

這是一個遞歸公式,,利用X[n]產(chǎn)生X[n+1]。其中:

  • a:系數(shù),,取值范圍:0<a<m;
  • c:增量,,取值范圍:0<=c<m;
  • m:模,取值范圍:m>0,;

說明:
①m應盡可能的大,,通常至少大于2^30(2的30次方);
②如果m選取為2的冪(即m=2^n),,則a的值通常應滿足a mod 8=5,;
③當m和a的選取比較合理時,對于c的約束并不強,,但要保證c與m互質(zhì),,例如c可以選擇1或11;
這個遞歸公式中,,X[n]用來產(chǎn)生X[n+1],,因此,X[n]被稱為種子,。也就是說,,前一個隨機數(shù)是后一個隨機數(shù)的種子。在實際使用時,,第一個種子一般是作為參數(shù)賦值給函數(shù)的,。這種遞歸公式計算對于C/C++等語言很適合,但是對于PLC的編程語言有所困難,。因此,,在實際PLC編程時,,可以使用系統(tǒng)時間戳作為種子,即:

randomNumber=(a*seed +c) % m;

下面介紹下我編寫的函數(shù)FC5006_RandomReal,,它有兩個輸入?yún)?shù):

  • minValue:需要產(chǎn)生隨機數(shù)范圍的最小值,;
  • maxValue:需要產(chǎn)生隨機數(shù)范圍的最大值,;

三個常數(shù):

  • M_MOD:公式中的m,;
  • A_FACTOR:公式中的a;
  • C_INCREMENT:公式中的c,;

所有參數(shù)如下圖所示:

文章圖片2

代碼如下:

文章圖片3

我編寫了一個函數(shù)測試隨機數(shù)算法,,產(chǎn)生一個1~1000之間的實數(shù),代碼如下:

文章圖片4

多次測試結果如下:

文章圖片5

如果你對這個函數(shù)有任何問題,,歡迎留言討論,。

我的書《西門子S7-1200/1500 PLC SCL語言編程》比較詳細的介紹了SCL的編程,感興趣的話可以看看下面的鏈接:

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多