我想生成一个随机字符串(例如密码、用户名等)。应该可以指定所需的长度(例如 13 个字符)。
我可以使用哪些工具?
(出于安全和隐私原因,最好是离线生成字符串,而不是在网站上在线生成。)
我有两个句子对齐的平行语料库(文本文件),大约有 5000 万个单词。(来自 Europarl 语料库 -> 法律文件的平行翻译)。我现在想打乱两个文件的行,但都以相同的方式。我想使用 gshuf(我在 Mac 上)使用一个独特的随机源来解决这个问题。
gshuf --random-source /path/to/some/random/data file1
gshuf --random-source /path/to/some/random/data file2
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误消息end of file,因为显然随机种子需要包含要排序的文件包含的所有单词。真的吗?如果是,我应该如何创建一个适合我需要的随机种子?如果不是,我可以通过什么其他方式并行随机化文件?我想过将它们粘贴在一起,随机化然后再次拆分。但是,这看起来很难看,因为我需要首先找到文件中没有的分隔符。
首先,我们知道如何从 txt 文件中输出随机行:
perl -MList::Util -e 'print List::Util::shuffle <>' words.txt
Run Code Online (Sandbox Code Playgroud)
但是我们需要一个通用的解决方案(perl通常安装在每个类unix的操作系统上)从txt文件中输出4个随机单词,我们该怎么做?
$ cat words.txt
...
alpha
beta
gamma
delta
epsilon
...
$
Run Code Online (Sandbox Code Playgroud)
“...”代表许多其他词。
示例输出(它们之间没有换行符,但最后需要一个 unix 换行符,空格应该将它们分开):
$ perl SOMEMAGIC words.txt
gamma alpha delta beta
$
Run Code Online (Sandbox Code Playgroud)
仅使用 perl,最短的解决方案 (oneliner)。
它将用作人类难忘的密码生成器:https : //xkcd.com/936/
由于 afaik perl 足以被命名为“随机生成器”。
具有 32768 行唯一行的常见英语单词表示例:https : //pastebin.ubuntu.com/23726760/