測試環境為 CentOS7 x86_64 (虛擬機)
如何在 Linux 環境產生一組亂數 (Random number),可以透過下面幾種方式.
date
透過 date 的參數 %s , %N 來產生一種亂數.[root@localhost ~]# date +%s 1553777293 [root@localhost ~]# date +%N 306908268 [root@localhost ~]# date +%s%N 1553777311205358055
參數說明:
- %s – seconds since 1970-01-01 00:00:00 UTC
- %N – nanoseconds (000000000..999999999)
$RANDOM
RANDOM 環境變數主要是透過 /dev/random 這個檔案來產生亂數 (變數內容介於 0~32767 之間)[root@localhost ~]# echo $RANDOM 8638 [root@localhost ~]# echo $RANDOM 30473 [root@localhost ~]# echo $RANDOM 1360
如果覺得數值不夠大,可以自行 * 一個數值.
[root@localhost ~]# declare -i number=$RANDOM*35565 ; echo $number 927499635 [root@localhost ~]# declare -i number=$RANDOM*35565 ; echo $number 251764635 [root@localhost ~]# declare -i number=$RANDOM*35565 ; echo $number 262007355
/dev/random , /dev/urandom
基本上 /dev/random 和 /dev/urandom 會一直產生亂數 (依據當時 mouse 的移動 keyboard 鍵值 disk I/O 運作來隨機產生一組亂數).[root@localhost ~]# cat /dev/random | od -x 0000000 1cf4 93a8 95a2 f255 711f dff6 f8ba d1b0 0000020 2ff1 cecf 87e7 fb1f 1691 1708 4607 790e 0000040 31dc 6ade 021a 35a6 fecc e1ee 890d b35f 0000060 429f 7481 a46c 2202 1f4a 9098 cb22 4fea 0000100 9363 9304 59d5 6265 9b38 f145 1a64 43e0 0000120 029e 1008 70a9 339e 7ae3 a1d3 659f bc64 0000140 f07e d384 a58a 05e0 b4f2 929d ef61 65e5 0000160 a4d5 b292 728f 49c4 5a14 9411 c33b 643d 0000200 90f0 76a0 353f ab32 6f87 2e2a 1ab4 43de 0000220 fbbb 089f 910b e613 cc5b 4fa1 2789 939d 0000240 48be 1250 f376 aa64 242e 45f0 94d4 6b6c
od -x – dump files in octal(八進制) and other formats (-x : 16 進制)
[root@localhost ~]# cat /dev/urandom | od -x 1512500 d8bf 66d6 ba13 470a aa3d 8977 9aa2 3dcf 1512520 52e0 7c9d d81a afed 0dde 93b1 2e0e 251b 1512540 f128 1381 b993 515d b7f8 19d8 1af1 07b6 1512560 bd4d 1d53 66fa 255c dc9b 4d56 e6bf 9b2b
這檔但沒有辦法直接用,可以利用指令 head 與 cksum (或是 md5sum) 來產生亂數值.
head – output the first part of files
cksum – checksum and count the bytes in a file
[root@localhost ~]# head -200 /dev/urandom | cksum 2807095831 53907
[root@localhost ~]# head -200 /dev/urandom | cksum | cut -f1 -d" " 2400952302
[root@localhost ~]# head -200 /dev/urandom | md5sum | cut -f1 -d" " cced8655db9440bed54a8ffcabccc2da
UUID
還有另外一個 random UUID (Universally Unique Identifier) – /proc/sys/kernel/random/uuid 一樣會產生亂數值.[root@localhost ~]# cat /proc/sys/kernel/random/uuid f2b0cc61-e7db-4253-95cd-47184904914e [root@localhost ~]# cat /proc/sys/kernel/random/uuid 7a844589-afad-483a-9993-fd6e156f85fa
shuf
透過指令 shuf 可以指定範圍來產生亂數.shuf – generate random permutations
- -i (–input-range=LO-HI) – treat each number LO through HI as an input line
- -n (–head-count=COUNT) – output at most COUNT lines
[root@localhost ~]# shuf -i 0-9999999999 -n 1 5123218652 [root@localhost ~]# shuf -i 0-9999999999 -n 1 7303269963 [root@localhost ~]# shuf -i 0-9999999999 -n 1 825698533
沒有解決問題,試試搜尋本站其他內容