shell 生成指定范围随机数与随机字符串 .
shell 生成指定范围随机数与随机字符串
shell 生成指定范围随机数与随机字符串
1.使用系统的 $RANDOM 变量
- fdipzone@ubuntu:~$ echo $RANDOM
- 17617
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
#!/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
#!/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
#!/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
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
#!/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
shell 生成指定范围随机数与随机字符串 .的更多相关文章
- random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串
openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...
- python生成随机数、随机字符串
python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...
- JAVA中生成指定位数随机数的方法总结
JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...
- shell生成指定长度的随机数
生成指定长度是随机数 # 8位纯数字的随机数 tr -cd '0-9' </dev/urandom | head -c 8 # 16位包含字母.数字的随机数 tr -cd '[:alnum:]' ...
- Lua在给定范围内,生成指定个数不重复随机数组
本篇主要是参考 lua连续随机数 这篇文章完成.大家可以去原贴查看学习. 生成随机数组,暂时发现两种方法 1.把生成的数放到一个表里面,每次随机时判断这个表里是否有,若有再随机一次(问了朋友,很多人都 ...
- js随机生成一个数组中的随机字符串以及更新验证码
随机生成m,n范围的值得公式: Math.random()*(n-m)+m: 改正公式:Math.random()*(n+1-m)+m // 生成随机字符串function randomMixed(n ...
- mysql 生成指定范围随机数
生成随机数 生成0-3的随机数 SELECT RAND() * 3 最大不会超过3, SELECT FLOOR(RAND() * 3) 上面生成整数的值是0,1,2,3生成的随机整数是1,2,3的话, ...
- java 与日期转换相关的方法(java.util.date类型和java.sql.date类型互相转换)、随机字符串生成方法、UUID生产随机字符串
package com.oop.util; import java.text.*; import java.util.UUID; import org.junit.Test; /* * 与日期相关的工 ...
- JavaScript实现生成指定范围随机数和一个包含不重复数的随机数组
目前JavaScript里面还没有现成的方法可以实现这个简单地需求,我们就需要自己写代码了. 在js中有个函数:Math.random() 这个函数可以生成 [0,1) 的一个随机数. 我们的简单的改 ...
随机推荐
- 使用DOM动态创建标签
本文是参考<javascript Dom 编程艺术>第八章的内容所写,用到的知识点,就是关于创建平稳的web页面. 使用DOM方法: getElementById() getElement ...
- Java算法-堆排序
package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; public class HeapSor ...
- 图解Android - Zygote, System Server 启动分析
Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的).用ps 输出可以看到 >adb shell ...
- Android中获取图片的宽和高
在Android中,我们想获取图片的宽和高应该怎么办?一.正常加载图片的方法下获取宽和高 举一个简单的例子:创建一个图片的副本 //加载原图 Bitmap bmSrc = BitmapFactory. ...
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
建立了一个Javaweb工程,并在eclipse中配置了Web容器Tomcat.新建的jsp页面,添加一个简单的Java类.可是,JSP页面顶端出现“红色”的报错信息:The superclass & ...
- 5个最好的Python Web开发框架
Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开始学习Python,也立即就能获得生产力上的提升 ...
- 巧用jquery实现提交(submit)表单时候验证文本框是否为空
http://www.cnblogs.com/wifi/articles/2387131.html 先引用jquery Html部分--------------------------------- ...
- Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...
- 四层负载均衡——LVS
LVS 参考:http://zh.linuxvirtualserver.org/ 几个术语: Director:也可以称为调度器,LVS前端设备: realserver:也称为真实内部服务器, ...
- centos7中systemctl命令使用方法和心得体会
使用linux的同学对service和chkconfig两个命令都不陌生,其重要性不言而喻,那么怎么会突然冒出个systemctl命令呢?其实,为了简化操作,systemctl命令将service和c ...