免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5943 | 回复: 20
打印 上一主题 下一主题

awk 生成9位的随机数问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-05 21:28 |只看该作者 |倒序浏览
我想生成100个9位的随机数,但中问有的数只有8位的!应该怎么改写?

我生成linux pppoe 的chap-secrets

  1. echo test 192.168.3 | awk '{ srand(); for( x = 1; x < 100; x ++) printf( "%s\t\t*\t%-9d\t%s",  $1x, rand()*1000000000, $2"."x) }'

复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-11-05 23:49 |只看该作者
  1. #!/bin/bash
  2. #对awk不很熟悉,用shell如何?
  3. #
  4. _DO(){
  5. array=(0 1 2 3 4 5 6 7 8 9)
  6. _do(){
  7. echo -n ${array[$((RANDOM%${#array[@]}))]}
  8. }
  9. i=1
  10. n=9
  11. while((i<=n));do
  12.         _do
  13.         ((i++))
  14.         done 2>/dev/null
  15. echo
  16. }
  17. #
  18. while :;do
  19.         ((++m))
  20.         echo test \* $(_DO) 192.168.3.$m
  21.         ((m==100))&&break
  22. done
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2006-11-06 09:05 |只看该作者
%-9d
%09d
自动补零行不行?

论坛徽章:
0
4 [报告]
发表于 2006-11-06 13:02 |只看该作者
原帖由 寂寞烈火 于 2006-11-5 23:49 发表
[code]#!/bin/bash
#对awk不很熟悉,用shell如何?
#
_DO(){
array=(0 1 2 3 4 5 6 7 8 9)
_do(){
echo -n ${array[$((RANDOM%${#array[@]}))]}
}
i=1
n=9
while((i<=n));do
        _do
        (( ...



谢谢, 可以, 要好好学一下shell脚本!:em11:

论坛徽章:
0
5 [报告]
发表于 2006-11-06 13:06 |只看该作者
原帖由 waker 于 2006-11-6 09:05 发表
%-9d
%09d
自动补零行不行?



谢谢! 这个不用!

论坛徽章:
0
6 [报告]
发表于 2006-11-06 13:50 |只看该作者
原帖由 rainren 于 2006-11-5 21:28 发表
我想生成100个9位的随机数,但中问有的数只有8位的!应该怎么改写?

我生成linux pppoe 的chap-secrets
[code]
echo test 192.168.3 | awk '{ srand(); for( x = 1; x < 100; x ++) printf( "%s\t\t ...

如果要9位试试
100000000+rand()*100000000

论坛徽章:
0
7 [报告]
发表于 2006-11-06 15:15 |只看该作者
可以理解成:需要的是9个随机数字,[1-9][0-9]{8},那样只要不嫌麻烦,可以生成9个数字,其中第一个大于0

论坛徽章:
0
8 [报告]
发表于 2006-11-06 15:29 |只看该作者
也有个简单点的函数,

  1. function randInt(pPow){
  2.         while ((result = rand()*10^pPow) < 10^(pPow-1));
  3.         return int(result);
  4. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2006-11-06 20:29 |只看该作者
谢了, 试下先!

论坛徽章:
0
10 [报告]
发表于 2006-11-06 20:34 |只看该作者
原帖由 rainren 于 2006-11-6 20:29 发表
谢了, 试下先!

随便,不甜不要钱!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP