num=30
  scale=0.5
  
  awk -v N=$num -v scale=$scale 'BEGIN{srand();
      for(i=0;i<N;i++){
          a=rand();
          b=(a*2-1)*scale
          printf("%.2f\n", b);
      }
  }'
srand()生成随机种子,可以包含指定seed的表达式,如srand(1234),如果没有srand(),每次生成的随机数都是一样的,目前未搞清楚原因。
rand()生成[0, 1)的随浮点数。
如果需要生成[a,b)范围内的随机数,只需要对rand()生成的随机数做如下运算:
    var1=rand()
    var2 = a+var1*(b-a)
如生成[-1,1)的随机数:
    var1=rand()
    var2 = -1+var1*(1-(-1))
    # 或
    var1=rand()
    var2 = var1*2-1
如果将srand()放在for循环之内,在for循环中生成的随机数都是一个值。
    num=30
    scale=0.5
    
    awk -v N=$num -v scale=$scale 'BEGIN{
        for(i=0;i<N;i++){
            srand();
            a=rand();
            b=(a*2-1)*scale
            printf("%.2f\n", b);
        }
    }'
参考:
https://www.runoob.com/w3cnote/awk-built-in-functions.html