$RANDOM 是 Bash 中用来生成 0 至 32767 之间随机整数的一个内置 函数(而非常量)
其 不应 被用于生成密钥
样例-2. 从牌组中随机选牌
样咧-3. 模拟布朗运动
Jipe 提供了一些生成指定范围内随机数的方法
Bill Gradwohl 提出了一种改良后的仅适用于正数的公式
Bill 在这还给出了一个生成指定范围内随机数的通用函数
样例-4. 指定范围随机数
那么 $RANDOM 到底有多随机?最好的测试方法就是写一个脚本跟踪由 $RANDOM 生成的随机数的分布
接下来让我们多投几次由 $RANDOM 做的骰子
样例-5. 用 RANDOM 投骰子
从上一个样例中我们可以发现,在每次调用 RANDOM 生成器时,最好利用重置生成器种子
在 RANDOM 生成器中使用相同的种子会生成相同序列的随机数。(与 C 语言中的 random() 函数的行为一致)
样例-6. 重置 RANDOM 种子
伪设备文件 /dev/urandom 提供了比 $RANDOM 变量更随机化的伪随机数。命令 dd if=/dev/urandom of=targetfile bs=1 count=XXX 将会创建一个包含均匀分布的伪随机数的文件。但是想要在脚本中将这些随机数赋值给变量需要做一些变通,比如使用命令 od 或者使用管道导入命令 md5sum
当然也有其他在脚本中生成伪随机数的方法
比如: Awk 命令就提供了这样一种非常简易的方法
样例-7. 使用 awk 命令生成伪随机数
同样,命令 date 可以用于 生成整型随机数序列
totalline=`wc -l file|awk '{print $1}'`i=`date +%s%N | cut -c19-19`
j=0
#每10行随机取1行
while [ $i -lt $totalline ]do
k=`date +%s%N | cut -c19-19`
sed -n "${i}p" file >>newfile
j=`expr $j + 10`
i=`expr $k + $j`
done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)