linux下随机数字的生成Linux认证考试

文章作者 100test 发表时间 2009:07:09 20:30:36
来源 100Test.Com百考试题网


  方法一:
  命令大致如下:
  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("%d\n",$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范围内的随机数。

相关文章


linux_Unix各版本密码破解合辑Linux认证考试
linux认证辅导:_proc文件系统Linux认证考试
bash判断进程存在的3种方法Linux认证考试
Linux服务器的四种入侵级别Linux认证考试
linux下随机数字的生成Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛