Linux Shell里面生成随机数的一些思路分析

1.使用时间相关的随机数

利用data命令生成输出unixtimestamp(%s)和当前时间的纳秒数据(%N,精确到亿分之一秒。)

前者保证在不同秒数之内输出不重复 后者保证在同一秒内数字不重复 两者组合就可以了

代码如下:

date +%s%N

这个方法不依赖系统 只要时间不停止,就一直可以得到不重复的为随机数

2.系统shell内部变量 $RANDOM

这么没啥好说的  依赖shell

3.通过Linux的随机设备获取 然后算校验和

代码如下:

head -10 /dev/urandom | cksum

注意这里千万不要使用cat去获取 这个是一条没有尽头的路 获取1行和10行没有太大的区别 这个

4.通过Linux的内核的UUID获取

UUID的计算信息会加入硬件,时间,机器当前运行信息等,可以保证生成的都是全球唯一的 直接

代码如下:

cat /proc/sys/kernel/random/uuid

就可以 然后在算校验和转换为数字即可,但是依赖Linux内核。

如上4种思路 供自己参考

(0)

相关推荐

  • shell 生成随机数的实现方法总结

     shell 生成随机数的实现方法总结 1. 使用系统的 $RANDOM 变量 mimvp@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

  • Shell脚本实现随机数多种方法介绍(date、random、uuid)

    在日常生活中,随机数实际上经常遇到,想丢骰子,抓阄,还有抽签.呵呵,非常简单就可以实现.那么在做程序设计,真的要通过自己程序设计出随机数那还真的不简单了.现在很多都是操作系统内核会提供相应的api,这些原始参数是获取一些计算机运行原始信息,如内存,电压,物理信号等等,它的值在一个时间段可以保证是唯一的了.好了,废话我就不说了.呵呵. shell脚本程序我们有那些获得随机数方法呢? 一.通过时间获得随机数(date) 这个也是我们经常用到的,可以说时间是唯一的,也不会重复的,从这个里面获得同一时间

  • linux shell实现随机数几种方法分享(date,random,uuid)

    在日常生活中,随机数实际上经常遇到,想丢骰子,抓阄,还有抽签.呵呵,非常简单就可以实现.那么在做程序设计,真的要通过自己程序设计出随机数那还真的不简单了.现在很多都是操作系统内核会提供相应的api,这些原始参数是获取一些计算机运行原始信息,如内存,电压,物理信号等等,它的值在一个时间段可以保证是唯一的了.好了,废话我就不说了.呵呵. shell脚本程序我们有那些获得随机数方法呢? 一.通过时间获得随机数(date) 这个也是我们经常用到的,可以说时间是唯一的,也不会重复的,从这个里面获得同一时间

  • Linux Shell里面生成随机数的一些思路分析

    1.使用时间相关的随机数 利用data命令生成输出unixtimestamp(%s)和当前时间的纳秒数据(%N,精确到亿分之一秒.) 前者保证在不同秒数之内输出不重复 后者保证在同一秒内数字不重复 两者组合就可以了 复制代码 代码如下: date +%s%N 这个方法不依赖系统 只要时间不停止,就一直可以得到不重复的为随机数 2.系统shell内部变量 $RANDOM 这么没啥好说的  依赖shell 3.通过Linux的随机设备获取 然后算校验和 复制代码 代码如下: head -10 /de

  • PHP生成随机数的方法实例分析

    通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度. 复制代码 代码如下: function randomkeys($length) { $pattern = '1234567890abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&l t;>?;#:@~[]{}-_=+)(*&^%$?!'; //

  • Linux Shell 生成随机数和随机字符串的方法示例

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

  • Shell脚本生成随机密码的若干种可能

    1.生成随机密码(urandom版本) #!/bin/bash #Author:丁丁历险(Jacob) #/dev/urandom文件是Linux内置的随机设备文件 #cat /dev/urandom可以看看里面的内容,ctrl+c退出查看 #查看该文件内容后,发现内容有些太随机,包括很多特殊符号,我们需要的密码不希望使用这些符号 #tr -dc '_A-Za-z0-9' </dev/urandom #该命令可以将随机文件中其他的字符删除,仅保留大小写字母,数字,下划线,但是内容还是太多 #我们

  • Linux Shell如何用ssh命令统计分布式集群信息详解

    目录 一.统计分布式集群信息的思路 二.SSH加密原理 三.SSH命令 四.利用ssh-keygen和ssh-copy-id 实现免密登录 五.Linux Shell 脚本实现 六.ssh只循环一次问题 总结 一.统计分布式集群信息的思路 用免密的远程登陆命令,实现一台机器访问其他集群的机器.因此想要实现有几个重要步骤: 学会shh的使用方法 实现免密登录 编写shell程序 二.SSH加密原理 非对称加密技术是一种加密和解密用的不同密钥的加密方法.其中RSA和DSA就是非对称加密方法.当然非对

  • Linux下nginx生成日志自动切割的实现方法

    Linux下nginx生成日志自动切割的实现方法 1.编辑切割日志的 shell 程序,目录自定 #vi /data/nginx/cut_nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:00 function cutAccess() { dir=$1 newdir="${dir}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday&quo

  • Linux shell下30个有趣的命令和提示(推荐)

    这些是我收集了多年的Linux shell的30个有趣的命令和提示. 1. 监控命令(每2秒运行一次) watch "ls -larth" 2. 使用一个端口杀死程序 sudo fuser -k 8000/tcp 3. 限制以下命令的内存使用 ulimit -Sv 1000 # 1000 KBs = 1 MB ulimit -Sv unlimited # Remove limit 4. 使用正则表达式重命名所选文件 rename 's/\.bak$/.txt/' *.bak 5. 获得

随机推荐