2
我每次运行下面的代码时都会得到相同的输出。SystemVerilog数组随机种子Shuffle函数
module array_shuffle;
integer data[10];
initial begin
foreach (data[x]) begin
data[x] = x;
end
$display("------------------------------\n");
$display("before shuffle, data contains:\n");
foreach (data[x]) begin
$display("data[%0d] = %0d", x, data[x]);
end
data.shuffle();
$display("------------------------------\n");
$display("after shuffle, data contains:\n");
foreach (data[x]) begin
$display("data[%0d] = %0d", x, data[x]);
end
end
endmodule
输出:
------------------------------
before shuffle, data contains:
data[0] = 0
data[1] = 1
data[2] = 2
data[3] = 3
data[4] = 4
data[5] = 5
data[6] = 6
data[7] = 7
data[8] = 8
data[9] = 9
------------------------------
after shuffle, data contains:
data[0] = 8
data[1] = 6
data[2] = 7
data[3] = 9
data[4] = 5
data[5] = 0
data[6] = 1
data[7] = 4
data[8] = 2
data[9] = 3
有没有办法播种随机播放功能的随机化?
这是供应商特定的解决方案,但我认为没有标准方法。 – e19293001
不确定你的意思。所有模拟器都有一个机制来控制命令行中的种子。由于该标准没有明确定义随机化引擎的实现,所以基于该种子生成的随机值将是供应商特定的,当然, –