免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk的随机数是怎么生成的? [复制链接]

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-25 16:09 |只看该作者 |倒序浏览
本帖最后由 bulletmarquis 于 2014-11-25 16:13 编辑
  1. awk 'BEGIN{print rand()}'
  2. 0.237788
  3. awk 'BEGIN{print rand()}'
  4. 0.237788
  5. awk 'BEGIN{print rand()}'
  6. 0.237788
复制代码
单独执行这个rand的时候,为何每次都是生成同一个值呢?
  1. awk 'BEGIN{base1=rand();base2=rand();base3=rand();print base1,base2,base3}'
  2. 0.237788 0.291066 0.845814
复制代码
awk生成的这随机数真tmd假。。。
难道必须要先用srand来救场么?

论坛徽章:
8
戌狗
日期:2013-10-12 11:37:19双子座
日期:2014-05-06 14:40:39巨蟹座
日期:2014-06-14 09:22:18戌狗
日期:2014-09-18 16:05:44巨蟹座
日期:2014-12-27 16:37:26酉鸡
日期:2015-01-20 18:39:022015年亚洲杯之沙特阿拉伯
日期:2015-04-20 22:38:242015亚冠之萨济拖拉机
日期:2015-06-19 16:01:03
2 [报告]
发表于 2014-11-25 16:15 |只看该作者

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
3 [报告]
发表于 2014-11-25 16:26 |只看该作者
回复 2# prcardin


    难道和awk的版本都有关系?

   我的awk是3.1.6

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
4 [报告]
发表于 2014-11-25 16:37 |只看该作者
回复 3# bulletmarquis
我的3.1.5的和你的结果一样

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2014-11-25 16:37 |只看该作者
  1. awk 'BEGIN{srand();print rand()}'
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
6 [报告]
发表于 2014-11-25 16:56 |只看该作者
回复 1# bulletmarquis


    是时候祭出手册页说明了!!
  1. In most awk implementations, including gawk, rand() starts generating numbers from the same starting number, or seed, each time you run awk. Thus, a program generates the same results each time you run it. The numbers are random within one awk run but predictable from run to run. This is convenient for debugging, but if you want a program to do different things each time it is used, you must change the seed to a value that is different in each run. To do this, use srand().
复制代码

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
7 [报告]
发表于 2014-11-25 17:34 |只看该作者
回复 5# Shell_HAT


    srand我清楚,奇怪的是为啥用rand生成的时候,随机数永远是不变的呢?

   中间用一次srand,但下回单独rand的时候,值还是不变
  1. awk 'BEGIN{print rand()}'
  2. 0.237788
  3. awk 'BEGIN{srand();print rand()}'
  4. 0.903073
  5. awk 'BEGIN{print rand()}'
  6. 0.237788
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
8 [报告]
发表于 2014-11-25 17:35 |只看该作者
回复 1# bulletmarquis


    尽然真是这样。。。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2014-11-25 17:54 |只看该作者
回复 7# bulletmarquis


    请看6楼

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
10 [报告]
发表于 2014-11-26 09:17 |只看该作者
回复 9# Shell_HAT


    看着英文就头疼,只好祭出百度翻译了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP