shell 脚本随机数问题

今天,为了练习一个脚本,需要得到一个范围内的随机数。遇到几个问题:

1. bin/sh里没有$RANDOM, 而是在bin/bash。(ubuntu12.04)

2. 如果随机数范围小于$RANDOM, 可用echo "$min + $RANDOM%($max-$min)"。但是如果范围大于RANDOM,这个式子就不适用了。而要用

echo "$min + $RANDOM / $RANDOM_MAX_INT * ($max-$min+1)" | bc -l   这里的bc是为了支持浮点运算,否则$RANDOM / $RANDOM等于0或1。这样还不行,因为bc -l输出的是浮点数,小数点后很多位。于是要把整数部分截取---random=${random%.*}。这个截取我是看了网上的一个写法,开始搞不明白啥意思,后来查了下。原来是shell里的字符串匹配处理,比如${#param},  ${param%word}, ${param#word}, 其中的word还可以符号扩展。这些很有用,也很强大。random=${random%.*}就是取random小数点前面的数字。

3."$min + $RANDOM / $RANDOM_MAX_INT * ($max-%min+1) | bc -l 这个其实也有问题,因为有些数字通过这个式子肯定产生不出来。原因就是从1到$RANDOM,每个数字对应范围(min, max)内的多个连续数字。怎样才能有一个在任意范围(min, max)内的均匀分布的随机数呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值