linux如何生成一组随机数据结构,linux下随机数字的生成

方法一:

命令大致如下:

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`)) %1024|bc 可以生成0-1023范围内的随机数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值