首页 > 解决方案 > bash 脚本中的随机种子

问题描述

我想在 bash 脚本中创建一个随机种子,但不知何故知道以后如何再次计算相同的随机种子。假设我有一系列服务器 id:1 到 10。我想随机选择一个服务器来运行测试。我可以通过使用 RANDOM 函数来做到这一点并查看值

echo $((1 + RANDOM % 10))
6

然后在服务器 id 6 上运行测试。

我在一个循环中这样做了 5 次。

有没有办法稍后重新计算值(服务器的 ID)以查看测试在哪里运行?我应该提到我不希望将 id 存储在数组中。

或者,除了使用 RANDOM 函数之外,还有其他方法可以实现吗?

标签: bashrandom-seed

解决方案


假设您想要可重新播放的“随机”序列,您可以使用以下命令shuf

$ printf '%s\n' server{1..10} | shuf --random-source file
server3
server6
server5
server9
server1
server2
server4
server8
server7
server10

只要您使用相同file的随机源,序列将保持不变并且可以以相同的顺序重播。

有关信息,shuf -e server{1..10} --random-source file如果您想摆脱该命令,也可以使用该printf ... |命令。

使用-ishuf命令的选项,如果您有连续的数字范围来随机播放。


推荐阅读