国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux Shell 生成隨機數和隨機字符串的方法示例

2019-10-26 18:59:03
字體:
來源:轉載
供稿:網友

日常生活中,會經常用到隨機數,使用場景非常廣泛,例如買彩票、丟骰子、抽簽、年會抽獎等。

Shell 下如何生成隨機數呢,米撲博客特意寫了本文,總結 Linux Shell 產生隨機數的多種方法。

計算機產生的的只是“偽隨機數”,不會產生絕對的隨機數(是一種理想隨機數)。實際上,偽隨機數和理想隨機數也是相對的概念,例如偽隨機數在1萬萬億億億年內也無法重復,算是理想隨機數么?

偽隨機數在大量重現時也并不一定保持唯一,但一個好的偽隨機產生算法將可以產生一個非常長的不重復的序列,例如 UUID(通用唯一識別碼)在100億年內才可用完。

 1. 使用系統的 $RANDOM 變量(CentOS、Ubuntu、MacOS 都支持,但只有5位數隨機)

mimvp@ubuntu:~$ echo $RANDOM17617

$RANDOM 的范圍是 [0, 32767]

示例:使用 for 循環來驗證:

#!/bin/bash# mimvp.com 2016.05.10function print_random() {  for i in {1..10};  do    echo -e "$i /t $RANDOM"  done}print_random

運行結果:

# sh mimvp_shell_rand.sh
1        20191
2        16817
3        25971
4        1489
5        34
6        25183
7        920
8        315
9        18845
10       29519

如需要生成超過32767的隨機數,可以用以下方法實現(有缺陷)

例:生成 40,000,000~50,000,000 的隨機數,但最后末尾五位數在隨機變化,實現原理有缺陷

#!/bin/bash# mimvp.com 2016.05.10## Linux 系統隨機數 + 范圍上限值后, 再取余function mimvp_random_bignum() {  min=$1  max=$2  mid=$(($max-$min+1))  num=$(($RANDOM+$max))    # 隨機數+范圍上限, 然后取余  randnum=$(($num%$mid+$min)) # 隨機數包含上下限邊界數值  echo $randnum}function print_random_bignum() {  for i in {1..10};  do    bignum=$(mimvp_random_bignum 40000000 50000000)    echo -e "$i /t $bignum"  done}print_random_bignum

運行結果:

# sh mimvp_shell_rand.sh 
1        40022422
2        40014261
3        40022712
4        40016695
5        40026575
6        40032198
7        40026667
8        40016024

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂东县| 含山县| 高密市| 哈密市| 青铜峡市| 兴山县| 河池市| 香河县| 洪江市| 武威市| 广丰县| 神农架林区| 浦江县| 金门县| 松溪县| 新巴尔虎右旗| 拉孜县| 青海省| 福安市| 灵台县| 海安县| 贡山| 凭祥市| 扶余县| 连州市| 邯郸市| 达州市| 连城县| 桐城市| 上栗县| 长汀县| 彭泽县| 鹤岗市| 谷城县| 濮阳市| 昌乐县| 库车县| 新余市| 开远市| 太和县| 五华县|