2011-05-17 137 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