本文主要是介绍$RANDOM: 产生随机整数及双圆括号结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
$RANDOM: 产生随机整数
$RANDOM 是Bash的内部函数 (并不是常量), 这个函数将返回一个伪随机整数, 范围在0 - 32767之间.
例:从一副扑克牌中取出一张随机的牌.
#/bin/bash
# 随机抽取一张扑克Suites="Clubs
Diamonds
Hearts
Spades"Denominations="2
3
4
5
6
7
8
9
10
Jack
Queen
King
Ace"suite=($Suites)
denomination=($Denominations)num_suites=${#suite[*]}
num_denominations=${#denomination[*]}echo -n "${denomination[$((RANDOM%num_denominations))]} of "
echo ${suite[$((RANDOM%num_suites))]} exit 0
在一个指定范围内产生随机数的技巧.
# 在6到30之间产生随机数.
rnumber=$((RANDOM%25+6))# 还是在6-30之间产生随机数,
#+但是这个数还必须能被3整除.
rnumber=$(( RANDOM%27/3*3+6))
范围公式:
rnumber=$(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))
/dev/urandom 设备文件提供了一种比单独使用$RANDOM更好的, 能够产生更加”随机”的随机数的方法. dd if=/dev/urandom of=targetfile bs=1 count=XX 能够产生一个很分散的伪随机数序列. 然而, 如果想要将这个数赋值到一个脚本文件的变量中, 还需要可操作性, 比如使用od命令,或者使用dd命令, 或者通过管道传递到md5sum命令中.
date命令也可以用来产生伪随机整数序列.
双圆括号结构
与let命令很相似, ((…))结构允许算术扩展和赋值.
例:
a=$(( 5+3 )) # 与let "a=5+3"等价.
双圆括号结构也被认为是在Bash中使用C语言风格变量操作的一种处理机制.
例:C语言风格的变量操作.
#!/bin/bash
# 使用((...))结构操作一个变量,C语言风格的变量操作.echo(( a = 23 )) # c语言风格的变量赋值,"="两边允许有空格.
echo "a (initial value) = $a"(( a++ )) # c语言风格的后置自加.
echo "a (after a++) = $a"
# (( a-- ))、(( ++a ))、(( --a ))类似.# 注意:就像在c语言中一样,前置或后置自减操作会产生一些不同的副作用.
n=1; let --n && echo "True" || echo "False" # False
n=1; let n-- && echo "True" || echo "False" # True echo
(( t = a<45?7:11 )) #c语言风格的三元操作.
echo "If a<45,then t = 7,else t = 11."
echo "t = $t"exit 0
这篇关于$RANDOM: 产生随机整数及双圆括号结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!