免费注册 查看新帖 |

Chinaunix

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

awk产生随机数的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-25 10:45 |只看该作者 |倒序浏览
有一个关于awk产生随机数的问题始终想不明白。我现在有一个正数N,它的%1是N*1%=M,我想在1~int(M)之间取一个随机数,我写的awk语句如下:
awk 'BEGIN(srand($RANDOM))
{
    N=1234;
   M=int(N*0.01);

    这里如何使用rand,每读取data一行记录就获取在1~M之间的一个随机整数?
}
' data

论坛徽章:
0
2 [报告]
发表于 2011-02-25 11:20 |只看该作者
M = int(rand()* n) + 1

论坛徽章:
0
3 [报告]
发表于 2011-02-25 14:02 |只看该作者
回复 2# ontherd

    谢谢你,我试了下你的方法,不是我想要的
    可能我没说清楚,是这样的:
  #!/bin/sh
  awk 'BEGIN{srand($RANDOM);}
  {
       value=int($1*0.01);
       #这里想获取1~value间的一个随机数,不知道使用random该如何生成,或者有其他什么办法
  }
' data
data文件内容
123
456
789

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-02-25 14:17 |只看该作者
回复  ontherd

    谢谢你,我试了下你的方法,不是我想要的
    可能我没说清楚,是这样的:
  #!/b ...
kelehaier 发表于 2011-02-25 14:02


是这么?
     awk 'BEGIN{srand()}
{value=int($1*0.01);print int(value*rand())+1}'

论坛徽章:
0
5 [报告]
发表于 2011-02-25 14:31 |只看该作者
回复 4# yinyuemi


    谢谢,这个问题解决了

论坛徽章:
0
6 [报告]
发表于 2011-03-29 18:03 |只看该作者
是这么?
     awk 'BEGIN{srand()}
{value=int($1*0.01);print int(value*rand())+1}'
yinyuemi 发表于 2011-02-25 14:17


测试了一下。全是1啊。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
7 [报告]
发表于 2011-03-30 00:12 |只看该作者
回复 6# laohuanggua

如果$1大于1000就不是1了,

$ seq 1000 1010|awk 'BEGIN{srand()}
{value=int($1*0.01);print int(value*rand())+1,$1}'
10 1000
7 1001
6 1002
8 1003
1 1004
1 1005
5 1006
1 1007
1 1008
2 1009
10 1010
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP