我遇到了这个问题,我很困惑.
我在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,那么在系统时钟初始化之前,您每次都可能看到相同的值.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。