Shell编程实现随机函数
来源:互联网 发布:微信淘宝客返利机器人 编辑:程序博客网 时间:2024/05/22 03:40
采用Shell编程实现随机函数(包括整数、符点数、字符、日期时间),顺便与AWK实现作下性能对比
Shell(bash)实现的随机函数(保存在random_function.sh文件):
#!/bin/bash
#
# 产生各类型数据随机函数(BASH实现)
# chm, 461810517@qq.com
# 2011/11/16
#
# BASH中RANDOM伪变量,会随机产生0到32767之间的整数
RANDOM_MAX_INT=32768
# 产生随机整数, 其值大于等于min, 小于等于max
function random_int() {
local min=$1
local max=$2
local random=$( echo "${min}+${RANDOM}/${RANDOM_MAX_INT}*(${max}-${min}+1)" | bc -l )
echo -n ${random%.*}
}
# 产生随机浮点数, 其整数部分位数最大为precision, 小数部分位数最大为scale
# printf函数会进行四舍五入操作
function random_float() {
local precision=$1
local scale=$2
local random=$( echo "${RANDOM}/${RANDOM_MAX_INT}*(10^${precision}) + ${RANDOM}/${RANDOM_MAX_INT} " | bc -l )
printf "%.${scale}f" ${random}
}
# 产生长度为len的随机字符串
# opt为"lower"时, 产生由小写字母构成的随机字符串; opt为"upper"时, 产生由大写字母构成的随机字符串; opt为其它时, 产生大小写字母构成的随机字符串
function random_string() {
local opt=$1
local len=$2
local alphabet=(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\
A B C D E F G H I J K I M N O P Q R S T U V W X Y Z\
0 1 2 3 4 5 6 7 8 9)
if [ ${opt} == "lower" ]; then
alphabet=(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)
elif [ ${opt} == "upper" ]; then
alphabet=(A B C D E F G H I J K I M N O P Q R S T U V W X Y Z)
fi
for ((i=0; i<${len}; i++))
do
echo -n ${alphabet[ $(random_int 0 $((${#alphabet[@]}-1)) ) ]}
done
}
# 产生格式为format的随机日期时间值
# begin_time, end_time格式: yyyy-mm-dd HH:MM:SS[ DST]
# format: 日期时间格式, 如"+%Y-%m-%d %H:%M:%S"
function random_time() {
local begin_time=$( date -d "$1" "+%s" )
local end_time=$( date -d "$2" "+%s" )
echo -n $( date -d "$1 GMT +$( random_int 1 $((end_time-begin_time+1)) ) seconds" "$3" )
}
测试脚本(取名random_test.sh):
#!/bin/bash
source ./random_function.sh
COLUMN_DATA_SEP="|"
for (( i=0; i<1000; i=i+1 ))
do
random_int 10 100
echo -n ${COLUMN_DATA_SEP}
random_float 3 2
echo -n ${COLUMN_DATA_SEP}
random_string "lower" 5
echo -n ${COLUMN_DATA_SEP}
random_time "2009-06-01 12:30:30" "2011-07-15 23:59:59" "+%Y-%m-%d %H:%M:%S"
echo
done
运行random_test.sh:
./random_test.sh
注:必须为random_test.sh添加可执行权限
采用random_test.sh进行测试,AWK将条数同样配置成1000条,测试发现:Shell耗时13s、AWK耗时0.01s。
注:AWK实现参考【采用AWK编程实现随机函数(包括整数、浮点数、字符串、日期时间)】
- Shell编程实现随机函数
- 采用Shell编程实现随机函数(包括整数、符点数、字符、日期时间),顺便与AWK实现作下性能对比
- 在shell中编程实现获取c函数输出
- 在shell中编程实现获取c函数输出
- Shell编程之 函数
- shell编程函数运用
- shell 编程之函数
- shell 编程-函数
- shell编程-创建函数
- Shell编程(七)---函数
- shell编程基础------函数
- Shell编程(5):函数
- 伪随机函数的实现
- 随机函数实现抽奖(1)
- 随机函数实现抽奖(2)
- shell编程--实现人机交互
- 采用AWK编程实现随机函数(包括整数、浮点数、字符串、日期时间)
- 1----编程实现100以内两个随机整数的加法运算练习(rand函数)
- chrome跨域请求注意事项
- Android drawable微技巧,你所不知道的drawable的那些细节
- NYOJ 673 悟空的难题 数组标记排序
- ajax+promise 封装http请求
- 门面模式/外观模式
- Shell编程实现随机函数
- vi编辑器假死状态
- 性能测试
- MySQL 中文插入数据乱码(问号????)
- Java Thread.join()方法
- github 中的pull request
- <context annotation-config />标签意义
- flask 跨域 cookie
- iOS开发之基础视图—— UIActionSheet