linux `shuf` --random-source 中提到的随机字节是什么?

what's the random byte mentioned in linux `shuf` --random-source?

我正在尝试使用 Linux shuf 命令准备一些随机文件,但是,通过 shuf --help,它不提供任何“种子”选项。我想知道是否有任何解决方法?谢谢!

更新:

感谢评论中的提醒,我意识到(1)shuf FILE每次都会产生不同的结果;和 (2) 当 --random-source 相同时,产生的结果相同,所以我猜可以用来使洗牌过程可复制?

然后出于好奇:长期以来我认为随机性是由随机种子控制的,但正如 man 所说,--random-source 指定读取“随机字节”的位置。我想知道这个随机字节与随机种子有什么关系?

I wonder if there is any workaround?

--random-source个选项。

I guess can be used to make the shuffling procedure replicatable?

这就是 --random-source 的用途。

how is this random bytes related to the random seed?

它是随机字节的来源

GNU shuf 有一个尽可能优化的算法,该算法强烈依赖于其他选项。在最简单粗暴的过度简化中,您只需从 1 中选择一个随机数来计算文件中的行数,然后打印包含该数字的行。然后重复并选择另一个没有重复的号码。

正在浏览 GNU shuf.c sources I see the number generation is in shuf/randint.c randint_genmax()

基本上我相信你在混淆算法。确实pseudorandom number generators use a seed. However shuf is intended to work with /dev/urandom - a special file where the kernel itself keeps a global seedshuf 旨在与 any 随机数生成方法一起使用。因此 shuf 它不需要特定随机数生成方法的种子,而是需要一个在读取时提供随机字节的流。