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

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

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

shellrandomurandomuuidlinux

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

1.使用系统的 $RANDOM 变量

[plain] view plaincopyprint?

  1. [email protected]:~$ echo $RANDOM
  2. 17617
[email protected]:~$ echo $RANDOM
17617

$RANDOM 的范围是 [0, 32767]

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

例:生成400000~500000的随机数

[plain] view plaincopyprint?

  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的随机数

[plain] view plaincopyprint?

  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避免阻塞。

[plain] view plaincopyprint?

  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个字符。

[plain] view plaincopyprint?

  1. [email protected]:~/shell$ cat /proc/sys/kernel/random/uuid
  2. fd496199-372a-403e-8ec9-bf4c52cbd9cd
[email protected]:~/shell$ cat /proc/sys/kernel/random/uuid
fd496199-372a-403e-8ec9-bf4c52cbd9cd

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

[plain] view plaincopyprint?

  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位随机字符串

[plain] view plaincopyprint?

  1. #使用date 生成随机字符串
  2. date +%s%N | md5sum | head -c 10
  3. #使用 /dev/urandom 生成随机字符串
  4. cat /dev/urandom | head -n 10 | md5sum | head -c 10
时间: 2024-10-03 19:25:48

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

Linux Shell 生成随机数和随机字符串

日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 本文原文转自米扑博客:Linux Shell 生成随机数和随机字符串 计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).实际上,伪随机数和理想随机数也是相对的概念,例如伪随机数在1万万亿亿亿年内也无法重复,算是理想随机数么? 伪随机数在大量重现时也并不一定保持唯一,但一

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

import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print random.randrange(0, 101, 2) # 随机浮点数:print random.random()print random.uniform(1, 10) # 随机字符:print random.choice('[email protected]#$%^&*()') # 多个字符中生成指定数量的随机字符:print r

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

// 生成随机字符串function randomMixed(n) {    var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];    var res = "&qu

shell生成指定范围内的随机数

#!/bin/bash read -p "请输入起始数:" min read -p "请输入终止数:" max if [ $min -gt $max ] then echo "起始数大于终止数!" else echo -n "随机数:" ;expr $(date +%N) % $[$max - $min + 1] + $min #日期函数生成随机数向最大值和最小值的差加1后取余得到一个随机数,然后加上最小值保证能取到的最小值和

随机数和随机字符串的生成

function getRandomNumber(min,max){    var min = Math.floor(min);    var max = Math.floor(max);    return Math.floor(Math.random()*(max-min)); } function getRandomString(number){    var char = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','

python 产生随机数,随机字符串

import randomimport string#随机整数:print random.randint(1,50)#随机选取0到100间的偶数:print random.randrange(0, 101, 2)#随机浮点数:print random.random()print random.uniform(1, 10)#随机字符:print random.choice('[email protected]#$%^&*()')#多个字符中选取特定数量的字符:print random.sample

.net生成随机字符串

生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// <summary> /// 随机系数 /// </summary> public static int _RandIndex = 0; #region 获取某个区间的一个随机数 /// <summary> /// 获取某个区间的一个随机数 /// </summary>

Python学习总结7:随机字符串和随机数

Python生成随机数与随机字符串,需要import random模块.random模块最常用的几个函数如下: 1. random.random(a, b) 用于生成一个0到1的随机符点数: 0 <= n < 1.0 >>> import random >>> random.random() 0.85415370477785668 >>> random.uniform(1, 10) 5.4221167969800881 2. random.

SQL Server生成指定范围内的随机数

在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况.而且在很多语言中比如Java.C#.SQl等,都会有一个函数生成一个类似于0.234273983423789的随机小数,而所有的随机数都是通过这个最基本的随机数(0.234273983423789)变化过来的. 下面我说一下生成指定范围随机数的思路,比如我要生成一个100-999范围内的随机数,我就要保证我写的生成随机数的表达式所生成的值,最大是999,最小是100.还有就是要明白一个数学里的小道理,0.99去乘一个数字所得的结