国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临夏市| 厦门市| 凤台县| 车致| 晋州市| 得荣县| 阜宁县| 昌平区| 上虞市| 十堰市| 合江县| 武宣县| 汝南县| 沛县| 阿图什市| 昌平区| 平陆县| 年辖:市辖区| 靖州| 武陟县| 景宁| 静海县| 汤原县| 农安县| 穆棱市| 枝江市| 洪湖市| 玉山县| 平邑县| 长垣县| 开封县| 长泰县| 讷河市| 沈阳市| 灵丘县| 揭阳市| 鲜城| 兴安盟| 临武县| 蒙山县| 永德县|