Verilog按比例控制产生随机数

产生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产生非负数字这里不作讲解。

猜你喜欢

转载自blog.csdn.net/Hennys/article/details/107553997