How To - 如何產生一組亂數陣列?

同樣是亂數問題,但是這個需求主要是產生一個包含0~N所有數值但為亂數出現的陣列。
如:0、4、2、3、1。

以下有幾種方式可以達成。


圖片程式版本:LabVIEW 2013
範例程式版本:LabVIEW 8.6


使用MathScript
首先,在畫面上插入 MathScript Structure ,接下來輸入下面的指令:
x=randperm(N),此例為100

接著在 MathScript Structure 邊上按右鍵選 Add Output >> x



最後將輸出跟圖表接在一起即可。




使用 Riffled
直接產生一個0~N的陣列,送入 block diagram >> Signal processing >> Signal Operation >> Riffled.vi 即可。



使用 Cluster Sorting
當你使用的 LabVIEW 版本沒有支援 MathScript,同時也沒安裝 Signal Processing 模組的時候怎麼辦?還好還可以利用 Cluster Sorting 的方式來快速完成。

首先提到 block diagram >> Programming >> Array >> Sort 1D Array 這個元件。基本上他會將送入的矩陣由小到大排列。若輸入的是一個 Cluster Array ,則他會依照 Cluster 的第一個數值來做排序的依據。因此藉由這個特性,進行以下的程式撰寫。



首先將 Random 的元件編在 Cluster 的第一個,迴圈的疊代次數編在第二個,接下來輸出為陣列之後進行 Sorting ,此時矩陣內第一個亂數產生的數值被依照順序排好了,但是第二個疊代次數卻被打亂了。最後再把疊代次數取出獨立建立陣列即可。

當然還有其他的方式可以執行,在這邊僅介紹三種常見且符合各種作業環境需求的方式。
簡單的範例程式在這邊下載。