Linux shell:使用AWK产生随机数/随机字符串

35 篇文章 0 订阅

有时候做测试,需要一些随机数,awk中的rand()函数就可以产生随机数

rand()说明如下:
rand()函数返回[0,1)之间的浮点数
int( n * rand() ),返回[0,n)之间的整数,也就是0~n-1之间的随机数
int( n * rand() ) + 1,返回1-n之间的随机数

注意,这里的int()是一个函数,不是表示整形,所以一定要加上括号,它的作用是取数字的整数部分

示例1: 产生随机数
随机产生10个学生的成绩,取值范围0-100

qingsong@db2a:~$ awk '
> BEGIN {
>   for (i = 1; i <= 10; i++)
>       print int( 101 * rand() )
> }'
57
7
64
27
39
18
70
8
60
71

示例2:产生10个随机的字符串:

qingsong@db2a:~$ cat randword.awk 
BEGIN {
        WORDNUM = 10
        for (i = 1; i <= WORDNUM; i++) {
                print randword(20)
        }
}

# randint(n): return a random integer number which is >= 1 and <= n
function randint(n) {
        return int(n *rand()) + 1
}

# randlet(): return a random letter, which maybe upper, lower or number. 
function randlet() {
        return substr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", randint(62), 1)
}

# randword(LEN): return a rand word with a length of LEN
function randword(LEN) {
        randw=""
        for( j = 1; j <= LEN; j++) {
                randw=randw randlet()
        }
        return randw
}
qingsong@db2a:~$ awk -f randword.awk 
wxXe8fVGnC4ANvrQrYlp
k9uwRkTNBpTQCrGNdsL4
ANbgdugqUFigTkhptKZC
1yGQGz1CW8Q6J1KJuzf1
KRCwdjYhqoKfpiVFgqxC
asuwcoE2MN18JxFpyUrb
6MPydAXBFBDFJzBmq5JQ
6taOEQOjnwaH9bN47h6A
fMZywlOZcoSLOgqjvd9R
CUAPqkaeU9nLtv1xuslc
qingsong@db2a:~$ 

这里有必要介绍一下,里面用到了三个自定义函数:
 randint(n)返回一个1-n之间的随机整数

 randlet()返回a-zA-Z0-9当中随机的一个字符,62即前面那个字符串的长度
 randword(LEN)则通过多次连接randlet()返回的随机字符,返回一个随机的字符串,长度为LEN


参考资料:《The AWK Programming Language》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值