linux bash中的$RANDOM在启动时总是一样的
发布时间:2020-12-13 23:08:56 所属栏目:Linux 来源:网络整理
导读:我遇到了这个问题,我很困惑. 我在linux启动过程的最开始时在bash中使用$RANDOM作为测试字符串.非常有趣的是,我观察到每次linux启动时$RANDOM都是一样的.就我而言,它是18869年. 我只是将$RANDOM回显到一个文件.我在每次启动时都观察到相同的数字.在此之后,$RA
我遇到了这个问题,我很困惑.
我在linux启动过程的最开始时在bash中使用$RANDOM作为测试字符串.非常有趣的是,我观察到每次linux启动时$RANDOM都是一样的.就我而言,它是18869年. 我只是将$RANDOM回显到一个文件.我在每次启动时都观察到相同的数字.在此之后,$RANDOM似乎返回“真实”随机数. echo "$RANDOM is a test string" >> /tmp/test 任何人都可以解释这个原因吗? 解决方法
这是Bash 4.2源代码中variables.c的初始种子算法:
static void seedrand () { struct timeval tv; gettimeofday (&tv,NULL); sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); } 换句话说,它基于pid和当前时间(以秒和微秒为单位)生成种子(系统精度为~1 / 100秒). 如果在一个小的,可预测的系统上检查$RANDOM,那么在系统时钟初始化之前,您每次都可能看到相同的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |