linux bash中的$RANDOM在启动时总是一样的

linux bash中的$RANDOM在启动时总是一样的,第1张

概述我遇到了这个问题,我很困惑. 我在linux启动过程的最开始时在bash中使用$RANDOM作为测试字符串.非常有趣的是,我观察到每次linux启动时$RANDOM都是一样的.就我而言,它是18869年. 我只是将$RANDOM回显到一个文件.我在每次启动时都观察到相同的数字.在此之后,$RANDOM似乎返回“真实”随机数. echo "$RANDOM is a test string" >> / 我遇到了这个问题,我很困惑.

我在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,那么在系统时钟初始化之前,您每次都可能看到相同的值.

总结

以上是内存溢出为你收集整理的linux bash中的$RANDOM在启动时总是一样的全部内容,希望文章能够帮你解决linux bash中的$RANDOM在启动时总是一样的所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存