2011-05-17 135 views
0

隨機數數組我想的輸入的所有可能的組合進行測試,以一個Verilog的模塊。我已經能夠通過構建一個嵌套for循環的數組來生成這些輸入。但是我想按隨機順序瀏覽數組。如何做到這一點,或者是否有辦法生成一個已經隨機排列的所有可能輸入數組?以Verilog

+1

我不知道我的理解。你說你「不想按隨機順序遍歷數組」 - 但嵌套for循環不會是隨機的嗎?另外,你能否通過「生成一個已經按照隨機順序的所有可能的輸入數組」來解釋你的意思? – Marty 2011-05-17 12:36:55

+0

如果你的目標是通過對輸入的所有有效組合進行迭代,沒有做的1,2,3,4,5相當於等角,也沒有重複投入? – 2011-05-17 16:28:27

+1

也許你正在尋找一個[洗牌算法(http://en.wikipedia.org/wiki/Fisher%2DYates_shuffle)? – Andy 2011-05-17 18:06:54

回答

4

如果你想重新排列的測試用例列表像洗牌的撲克牌,還有叫Fisher–Yates shuffle這樣做的算法。或者如果你使用SystemVerilog,工具指出數組有一個內置的shuffle方法。

+2

當然,我們都假設神經麻醉師需要什麼。無論如何,一個警告在該溶液是,如果有大量的有效刺激(在ALU添加例如兩個32位整數),則該方法洗牌將需要在測試開始時以消耗所有該內存。如果使用註釋散列函數(http://en.wikipedia.org/wiki/Perfect_hash_function),那麼您將不會有零時間內存分配問題。 – 2011-05-18 16:52:39