zoukankan      html  css  js  c++  java
  • shell 生成指定范围随机数与随机字符串

     from :shell 生成指定范围随机数与随机字符串

    1.使用系统的 $RANDOM 变量

    [uicpsadmin@iZ25a9gw7saZ ~]$ echo $RANDOM 
    27103

    $RANDOM 的范围是 [0, 32767]

     

    如需要生成超过32767的随机数,可以用以下方法实现。

    例:生成400000~500000的随机数

    #!/bin/bash  
      
    function rand(){  
        min=$1  
        max=$(($2-$min+1))  
        num=$(($RANDOM+1000000000)) #增加一个10位的数再求余  
        echo $(($num%$max+$min))  
    }  
      
    rnd=$(rand 400000 500000)  
    echo $rnd  
      
    exit 0  

    2.使用date +%s%N

    例:生成1~50的随机数

    #!/bin/bash  
      
    function rand(){  
        min=$1  
        max=$(($2-$min+1))  
        num=$(date +%s%N)  
        echo $(($num%$max+$min))  
    }  
      
    rnd=$(rand 1 50)  
    echo $rnd  
      
    exit 0  

    3.使用/dev/random 和 /dev/urandom

     

    /dev/random 存储着系统当前运行环境的实时数据,是阻塞的随机数发生器,读取有时需要等待。

    /dev/urandom 非阻塞随机数发生器,读取操作不会产生阻塞。

    例:使用/dev/urandom生成100~500的随机数,使用urandom避免阻塞。

    #!/bin/bash  
      
    function rand(){  
        min=$1  
        max=$(($2-$min+1))  
        num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')  
        echo $(($num%$max+$min))  
    }  
      
    rnd=$(rand 100 500)  
    echo $rnd  
      
    exit 0  

    4.使用linux uuid

     

    uuid 全称是通用唯一识别码,格式包含32个16进制数字,以'-'连接号分为5段。形式为8-4-4-4-12 的32个字符。

    fdipzone@ubuntu:~/shell$ cat /proc/sys/kernel/random/uuid  
    fd496199-372a-403e-8ec9-bf4c52cbd9cd 

    例:使用linux uuid 生成100~500随机数

    #!/bin/bash  
      
    function rand(){  
        min=$1  
        max=$(($2-$min+1))  
        num=$(cat /proc/sys/kernel/random/uuid | cksum | awk -F ' ' '{print $1}')  
        echo $(($num%$max+$min))  
    }  
      
    rnd=$(rand 100 500)  
    echo $rnd  
      
    exit 0  

    5.生成随机字符串

     

    例:生成10位随机字符串

    #使用date 生成随机字符串  
    date +%s%N | md5sum | head -c 10  
      
    #使用 /dev/urandom 生成随机字符串  
    cat /dev/urandom | head -n 10 | md5sum | head -c 10  

     

     

     

     

    1.使用系统的 $RANDOM 变量

  • 相关阅读:
    EntityFramework 启用迁移 EnableMigrations 报异常 "No context type was found in the assembly"
    JAVA 访问FTP服务器示例(2)
    NuGet Package Manager 更新错误解决办法
    JAVA 访问FTP服务器示例(1)
    RemoteAttribute 的使用问题
    诡异的 javascript 变量
    javascript apply用法
    Babun 中文乱码
    GSM呼叫过程
    转站博客园
  • 原文地址:https://www.cnblogs.com/sheng-247/p/7993635.html
Copyright © 2011-2022 走看看