快速业务通道

linux下随机数字的生成

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-02
方法一: 命令大致如下: echo $((16#`dd if=/dev/urandom bs=1 count=4 2>/dev/null| od -A n -t x4|sed s/[^1-9a-fA-F]//g`)) 分开来看: echo $((16#ABC))  意思是将十六进制数ABC转换成十进制数 `command` 意思是两个`中间的命令执行结果做为外壳命令的参数 /dev/urandom 是个生成随机数的设备,比/dev/random稍不安全,但产生速度极快 dd if=/dev/urndom bs=1 count=4 从随机数设备中取前4个字节(32位数) 2>/dev/null 意思是将错误信息重定向到空设备中 od -A n -t x4 意思是将dd过来的数据(一个随机的32位值)进行转换输出,-A n是不输出偏移标志,-t x4是将数字用16进制输出,并且4个字节一组,这样就以16进制输出一个32位的数 sed s/[^1-9a-fA-F]//g 意思是去年输出文件中非十六进制可接受的字符(此例中主要是删除行前的空格,也可以用tr -d '' '' 或 awk ''{print $1}''处理) 方法二: date --rfc-3339=ns|sed -n "s/.*.0*(.*) .*/1/p" 利用date命令生成的纳秒数作为随机数 命令也可以用: date --rfc-3339=ns|sed "s/.0*| /n/g"|sed -e 1d -e 3d 或 date --rfc-3339=ns|awk -F "[ t. ]" ''{printf("%dn",$3)}'' 可以用 echo 表达式|bc 生成特定运算结果,比如: echo $((16#`dd if=/dev/urandom bs=1 count=4 2>/dev/null| od -A n -t x4|sed s/[^1-9a-fA-F]//g`)) 24|bc 可以生成0-1023范围内的随机数

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号