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

        分类:             shell              2014-04-22 22:17     20902人阅读     评论(5)     收藏     举报    

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

1.使用系统的 $RANDOM 变量

  1. fdipzone@ubuntu:~$ echo $RANDOM
  2. 17617
fdipzone@ubuntu:~$ echo $RANDOM
17617

$RANDOM 的范围是 [0, 32767]

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

例:生成400000~500000的随机数

  1. #!/bin/bash
  2. function rand(){
  3. min=$1
  4. max=$(($2-$min+1))
  5. num=$(($RANDOM+1000000000)) #增加一个10位的数再求余
  6. echo $(($num%$max+$min))
  7. }
  8. rnd=$(rand 400000 500000)
  9. echo $rnd
  10. 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的随机数

  1. #!/bin/bash
  2. function rand(){
  3. min=$1
  4. max=$(($2-$min+1))
  5. num=$(date +%s%N)
  6. echo $(($num%$max+$min))
  7. }
  8. rnd=$(rand 1 50)
  9. echo $rnd
  10. 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避免阻塞。

  1. #!/bin/bash
  2. function rand(){
  3. min=$1
  4. max=$(($2-$min+1))
  5. num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')
  6. echo $(($num%$max+$min))
  7. }
  8. rnd=$(rand 100 500)
  9. echo $rnd
  10. 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个字符。

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

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

  1. #!/bin/bash
  2. function rand(){
  3. min=$1
  4. max=$(($2-$min+1))
  5. num=$(cat /proc/sys/kernel/random/uuid | cksum | awk -F ' ' '{print $1}')
  6. echo $(($num%$max+$min))
  7. }
  8. rnd=$(rand 100 500)
  9. echo $rnd
  10. 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位随机字符串

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

shell 生成指定范围随机数与随机字符串 .的更多相关文章

  1. 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 ...

  2. python生成随机数、随机字符串

    python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...

  3. JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...

  4. shell生成指定长度的随机数

    生成指定长度是随机数 # 8位纯数字的随机数 tr -cd '0-9' </dev/urandom | head -c 8 # 16位包含字母.数字的随机数 tr -cd '[:alnum:]' ...

  5. Lua在给定范围内,生成指定个数不重复随机数组

    本篇主要是参考 lua连续随机数 这篇文章完成.大家可以去原贴查看学习. 生成随机数组,暂时发现两种方法 1.把生成的数放到一个表里面,每次随机时判断这个表里是否有,若有再随机一次(问了朋友,很多人都 ...

  6. js随机生成一个数组中的随机字符串以及更新验证码

    随机生成m,n范围的值得公式: Math.random()*(n-m)+m: 改正公式:Math.random()*(n+1-m)+m // 生成随机字符串function randomMixed(n ...

  7. mysql 生成指定范围随机数

    生成随机数 生成0-3的随机数 SELECT RAND() * 3 最大不会超过3, SELECT FLOOR(RAND() * 3) 上面生成整数的值是0,1,2,3生成的随机整数是1,2,3的话, ...

  8. java 与日期转换相关的方法(java.util.date类型和java.sql.date类型互相转换)、随机字符串生成方法、UUID生产随机字符串

    package com.oop.util; import java.text.*; import java.util.UUID; import org.junit.Test; /* * 与日期相关的工 ...

  9. JavaScript实现生成指定范围随机数和一个包含不重复数的随机数组

    目前JavaScript里面还没有现成的方法可以实现这个简单地需求,我们就需要自己写代码了. 在js中有个函数:Math.random() 这个函数可以生成 [0,1) 的一个随机数. 我们的简单的改 ...

随机推荐

  1. 使用DOM动态创建标签

    本文是参考<javascript Dom 编程艺术>第八章的内容所写,用到的知识点,就是关于创建平稳的web页面. 使用DOM方法: getElementById() getElement ...

  2. Java算法-堆排序

    package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; public class HeapSor ...

  3. 图解Android - Zygote, System Server 启动分析

    Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的).用ps 输出可以看到 >adb shell ...

  4. Android中获取图片的宽和高

    在Android中,我们想获取图片的宽和高应该怎么办?一.正常加载图片的方法下获取宽和高 举一个简单的例子:创建一个图片的副本 //加载原图 Bitmap bmSrc = BitmapFactory. ...

  5. JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    建立了一个Javaweb工程,并在eclipse中配置了Web容器Tomcat.新建的jsp页面,添加一个简单的Java类.可是,JSP页面顶端出现“红色”的报错信息:The superclass & ...

  6. 5个最好的Python Web开发框架

    Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开始学习Python,也立即就能获得生产力上的提升 ...

  7. 巧用jquery实现提交(submit)表单时候验证文本框是否为空

    http://www.cnblogs.com/wifi/articles/2387131.html 先引用jquery Html部分--------------------------------- ...

  8. Jquery EasyUI的添加,修改,删除,查询等基本操作介绍

    http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...

  9. 四层负载均衡——LVS

    LVS   参考:http://zh.linuxvirtualserver.org/   几个术语: Director:也可以称为调度器,LVS前端设备: realserver:也称为真实内部服务器, ...

  10. centos7中systemctl命令使用方法和心得体会

    使用linux的同学对service和chkconfig两个命令都不陌生,其重要性不言而喻,那么怎么会突然冒出个systemctl命令呢?其实,为了简化操作,systemctl命令将service和c ...