产生0~100之间的随机数,其中小于50的数的比例为80%。
`timescale 1ns / 1ps
module Test1533;
reg [3:0] range;
//reg [9:0] data1;
reg [9:0] data;
reg big;
initial begin
repeat(100)
begin
#10;
range={$random}%10;
if(range<8)
big=1;
else
big=0;
if(big)
data={$random}%50;
else
data=({$random}%50)+50;
end
end
endmodule
这个代码是仿真代码,只能应用在仿真模块中,因此没有独立的设计代码。
仿真波形
从代码中可知,只有当range小于8的时候,才会产生0~50范围的数字,但是range的总体取值为0到10(实际能取0到9),因此可以达到80%的概率。至于如何用random产生非负数字这里不作讲解。