我正在尝试使用 Linuxshuf
命令准备一些随机文件,但是,通过shuf --help
,它不提供任何"种子"选项。我想知道是否有任何解决方法?谢谢!
更新:
感谢评论中的提醒,我意识到(1)每次shuf FILE
产生不同的结果;(2)当--random-source
相同时,产生的结果是相同的,所以我想可以用来使洗牌过程可复制吗?
然后只是出于好奇:长期以来,我一直认为随机性是由随机种子控制的,但正如man
所说,--random-source
指定在哪里读取"随机字节"。我想知道这个随机字节与随机种子有什么关系?
我想知道是否有任何解决方法?
有--random-source
选择。
我想可以用来使洗牌过程可复制吗?
这就是--random-source
的用途。
这个随机字节与随机种子有什么关系?
它是随机字节的来源。
GNUshuf
有一个尽可能优化的算法,并且该算法强烈依赖于其他选项。在最简单和最粗糙的过度简化中,您只需从文件中的行数1
选择一个随机数,然后使用该数字打印行。然后重复并选择另一个数字而不重复。
浏览GNU shuf.c源代码,我看到数字生成是在shuf/randint.c randint_genmax()中。
基本上我相信你混淆了算法。事实上,伪随机数生成器使用种子。但是,shuf
旨在与/dev/urandom
一起使用 - 一个特殊的文件,其中内核本身保留了一个全局种子。shuf
旨在与任何随机数生成方法一起使用。因此,shuf
不需要特定随机数生成方法的种子,而是需要一个在从中读取时提供随机字节的流。