shell如何生成指定范围随机数与随机字符串

1.使用系统的 $RANDOM 变量

fdipzone@ubuntu:~$ echo $RANDOM
17617

$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

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/

/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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, 阻塞
, echo
, 随机字符串
, 随机
, 随机数
, 随机字符
, min
, 生成
, urandom代码clinux
, 字符 生成
, 生成随机数
, 随机生成
inux生成随机数
shell 随机数、shell 产生随机数、shell 生成随机数、linux shell 随机数、shell随机数 范围,以便于您获取更多的相关知识。

时间: 2024-10-04 19:01:06

shell如何生成指定范围随机数与随机字符串的相关文章

java-Java 如何生成4096个字节的随机字符串

问题描述 Java 如何生成4096个字节的随机字符串 程序需要生成不同长度的随机字符串, 伪代码如下: String indata[] = new String[4]; indata[0] = (1字节): indata[1] = (128字节): indata[2] = (1024字节): indata[3] = (4096字节): 帮我想想如何补充上吧,非常感谢了.

PHP生成指定长度随机数最简洁的方法_php实例

刚才在写短信验证码模块,需要用到指定位数的随机数,然后网上一找发现太可怕了这么简单的事情竟然用了好几十行多个循环嵌套--看来没有好脑仁儿真的不适合当程序员. 自写了一行版本: function generate_code($length = 4) { return rand(pow(10,($length-1)), pow(10,$length)-1); } 为了便于理解,同时也为了这篇水文可以凑点字数,这是多行版: function generate_code($length = 4) { $

Python常用随机数与随机字符串方法实例_python

随机整数: 复制代码 代码如下: >>> import random >>> random.randint(0,99) 21 随机选取0到100间的偶数: 复制代码 代码如下: >>> import random >>> random.randrange(0, 101, 2) 42 随机浮点数: 复制代码 代码如下: >>> import random >>> random.random() 0.8

PHP动态生成指定大小随机图片的方法_php技巧

本文实例讲述了PHP动态生成指定大小随机图片的方法.分享给大家供大家参考,具体如下: <?php $image_width = 100; $image_height = 100; $image_str = ''; if (isset($_GET['w'])) { $image_width = intval($_GET['w']); } if (isset($_GET['h'])) { $image_height = intval($_GET['h']); } if (isset($_GET['s

PHP生成随机字符串程序代码

利用for循环把我们定义好的字符遍历即可  代码如下 复制代码 <?php /* Generate Password * Length : 8 */ $str = "0123456789abcdefghijklmnopqrstuvwxyz";   //   输出字符集 $n = 8;   //   输出串长度 $len = strlen($str)-1; for($i=0 ; $i<$n; $i++){ $s .=  $str[rand(0,$len)]; } echo $

利用随机数随机生成指定位数的字符串

关于随机生成密码的软件很多,js也可以利用随机数随机生成指定位数的密码.(小白学习记录,谢谢支持) js中关于随机数的Math对象中有一个Math.random()的函数,可以随机生成0-1之间的随机任意的数字.本实例利用该函数与Math.floor()函数随机生成字符串. 代码如下: </pre><pre name="code" class="html"><body> <div> 所需位数:<input typ

Oracle中如何生成指定范围内随机日期

/* * Oracle将日期作为过去某个关键日期(这个日期是公元前4712年1月1日)的整数偏移量来保存(即把日期保存为一个数字); * 因此可通过寻找'指定日期'与'关键日期'相对应的整数偏移量,再加一个指定范围内的随机整数来生成一个指定范围内的随机日期. */ 步骤: 1. 先找到'指定日期'与'关键日期'相对应的整数偏移量,格式为'J': SQL>select to_char(sysdate,'J') from dual; --系统给的结果是: 2456191 2. 生成指定范围[min_

python随机生成指定长度密码的方法_python

本文实例讲述了python随机生成指定长度密码的方法.分享给大家供大家参考.具体如下: 下面的python代码通过对各种字符进行随机组合生成一个指定长度的随机密码 python中的string对象有几个常用的方法用来输出各种不同的字符: string.ascii_letters 输出ascii码的所有字符 string.digits 输出 '0123456789'.   string.punctuation ascii中的标点符号 print string.ascii_letters print

生成指定长度的随机字符串

随机|字符串 '检测生成字符串的长度Response.Write(Len(iXuEr_Rnd_Str(100,1,1,1,1,1)) & "<br>")'以HTML编码输出到浏览器,避免含有某些特殊字符时不能正常显示Response.Write(Server.HTMLEncode(iXuEr_Rnd_Str(100,1,1,1,1,1)))'实际应用时,可以直接调用iXuEr_Rnd_Str(Length,S1,S2,S3,S4,Ln)Function iXuEr_