Chinaunix
标题:
如何高效率的生成包含指定字符的随机字符串?
[打印本页]
作者:
work4seo
时间:
2016-09-28 15:46
标题:
如何高效率的生成包含指定字符的随机字符串?
本帖最后由 work4seo 于 2016-09-28 15:48 编辑
现在想要生成包含a-z、H-X、-、0-9等字符的随机字符串,不一定要全部包含。
写了几个脚本,执行效率都不咋地,生成速度比较慢。
请问如何高效的生成?
目前的几段代码如下:
#! /bin/bash
function gencode(){
arr=(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z H I J K L M N O P Q R S T U V W X -);
len=${#arr[*]};
res="";
for((i=0; i<33; i++))
do
time=`date +%s`;
rannum=`echo $time$RANDOM + $RANDOM|bc`;
pos=`echo $rannum % $len`;
res=$res${arr[pos]};
done
echo $res
}
result=$(gencode 100 200)
echo ${result}
复制代码
执行时间感人:
real 0m3.682s
user 0m0.840s
sys 0m2.212s
复制代码
代码2:
<blockquote>代码2不知道抽什么风,贴不上来
复制代码
执行时间还是不太OK
real 0m2.611s
user 0m0.570s
sys 0m1.460s
复制代码
作者:
vagrant_1220
时间:
2016-09-28 16:01
例如随机字符串长度20
head -c 500 /dev/urandom | tr -dc a-z0-9A-Z- | head -c 20
作者:
moperyblue
时间:
2016-09-28 16:03
本帖最后由 moperyblue 于 2016-09-28 17:46 编辑
time echo {a..z} {H..X} - {0..9}|xargs -n1|shuf|head -33|paste -sd ''
wl1t7RizIdba-uVg96eKpjUnW4horqL05
real 0m0.066s
user 0m0.015s
sys 0m0.025s
time echo {a..z} {H..X} - {0..9}|xargs -n1|shuf|head -33|paste -sd ''
wury29n4kMJeQ8fHxSVa1pUKt6i-osh7l
real 0m0.078s
user 0m0.030s
sys 0m0.042s
作者:
本友会机友会摄友会
时间:
2016-09-28 16:25
提示:
作者被禁止或删除 内容自动屏蔽
作者:
fh21_xuejinlian
时间:
2016-09-28 16:38
tr -dc _A-Z-a-z-0-9 </dev/urandom |head -c20
作者:
jason680
时间:
2016-09-28 16:43
回复
1#
work4seo
Would you like this ...
$ time awk 'BEGIN{srand();t=split("0123456789abcdefghijklmnopqrstuvwxyzHIJKLMNOPQRSTUVWX-",a,"");for(n=1;n<=
34
;++n)r=r a[int(rand()*t+1)];print r}'
KP5c5ycTlRalxxmPTSN4TRblj6QabgOMMV
real 0m0.055s
user 0m0.000s
sys 0m0.032s
$ time awk 'BEGIN{srand();t=split("0123456789abcdefghijklmnopqrstuvwxyzHIJKLMNOPQRSTUVWX-",a,"");for(n=1;n<=
34
;++n)r=r a[int(rand()*t+1)];print r}'
Jjwp1X13LJ0RRPsPpNeQO1gH6Jw2K6wrlg
real 0m0.057s
user 0m0.004s
sys 0m0.024s
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2