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

来源:互联网 发布:石狮优浮网络会所 编辑:程序博客网 时间:2024/05/22 08:26

有时候做测试,需要一些随机数,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() )> }'577642739187086071

示例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 <= nfunction 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 LENfunction randword(LEN) {        randw=""        for( j = 1; j <= LEN; j++) {                randw=randw randlet()        }        return randw}qingsong@db2a:~$ awk -f randword.awk wxXe8fVGnC4ANvrQrYlpk9uwRkTNBpTQCrGNdsL4ANbgdugqUFigTkhptKZC1yGQGz1CW8Q6J1KJuzf1KRCwdjYhqoKfpiVFgqxCasuwcoE2MN18JxFpyUrb6MPydAXBFBDFJzBmq5JQ6taOEQOjnwaH9bN47h6AfMZywlOZcoSLOgqjvd9RCUAPqkaeU9nLtv1xuslcqingsong@db2a:~$ 

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

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


参考资料:《The AWK Programming Language》

原创粉丝点击