echo $RANDOM
echo $((1+RANDOM%10))
echo $((78+RANDOM%10))
while true; do echo $RANDOM; sleep 0.5; done
watch -n 1 '(echo $RANDOM )'
在這邊$RANDOM這個變數的值會介於 0到32767 的整數,所以上述的指令意思會是:- 產生一個介於0-32767的亂數
- 產生一個介於1到10之間的亂數
- 產生一個介於78到87之間的亂數
- 不斷在螢幕上面跳出介於0-32767的亂數
上面這個方法得到的叫做pseudorandom integer,意思就是不是真的夠亂的亂數
一般使用沒有問題,但是如果是要用在加密上面,需要比較亂的亂數。那可以使用曹子德 (Theodore Y. Ts'o) 開始發展的 /dev/random與/dev/urandom。一般用法如下:
dd if=/dev/urandom count=4 bs=1 | od -t d
od -A n -t d -N 1 /dev/urandom | tr -d ' '
od -A n -t d -N 2 /dev/urandom | tr -d ' '
echo $(( $(od -A n -t d -N 2 /dev/urandom | tr -d ' ')%100 ))
watch -n 1 "(od -A n -t d -N 3 /dev/urandom | tr -d ' ')"
while true; do echo $(od -A n -t d -N 2 /dev/urandom | tr -d ' '); sleep 0.5; done
上面的指令od,是一種檔案內容篩選器,把內容根據某些方式顯示出來
- -A base:Specify the input address base. base may be one of d, o, x or n, which specify decimal, octal, hexadecimal addresses or no address, respectively.
- -t type:輸出的格式。這邊的 d 代表的是signed decimal,如果用 u 就是 unsigned decimal。
- -N length:Dump at most length bytes of input.
以上的指令參考《How to generate random number in Bash?》一文
_EOF_
沒有留言:
張貼留言