从特定索引启动单词生成器
Starting word generator from specific index
我有一个密码列表生成器,它可以生成特定长度的一组特定字符的所有组合。
自然列表很长,生成需要相当长的时间。
我想并行处理该过程,但 运行 变成了 algorithm/math 问题。
例如,我想为 4 个字符长的密码生成 [a-z](26 个字母)的所有组合。
组合总数为 26^4 = 456.976
并行化为 ex。两个进程,我想要一个进程处理前半部分,另一个处理后半部分。每个 228.488 种组合。
现在回答问题...
应该处理后半部分的过程,热到我从数字 228.488 到生成器应该开始的字母组合?
我正在寻找一个通用的解决方案,这样即使更改了字母数或密码长度,它仍然可以使用。
当然这个早就解决了,说不定还有名字呢。我只是不知道那个名字,我不能 google 它。
我正在用 C# 实现这个
谢谢。
您正在探索整个 [a-z]^4
space。 space.
中有 26^4
个不同的元素
只需将 [a-z]^4
的一个元素视为以 26
为基数的 4 位数字。给定一个整数 i
,你可以在 base 26 中找到它的表达式,并得到你正在寻找的 word
。
word[0] = i % 26
word[1] = (i / 26) % 26
word[2] = (i / 26 / 26) % 26
word[3] = (i / 26 / 26 / 26) % 26
如果您有 M
台机器,索引 j
处的机器可以从以下索引启动:j*(26^4/M)
.
因此,如果您的机器从索引开始:228488
,它将以单词开头:
word[0] = 228488 % 26 = 0 => 'a'
word[1] = (228488 / 26) % 26 = 0 => 'a'
word[2] = (228488 / 26 / 26) % 26 = 0 => 'a'
word[3] = (228488 / 26 / 26 / 26) = 13 => 'm'
我有一个密码列表生成器,它可以生成特定长度的一组特定字符的所有组合。 自然列表很长,生成需要相当长的时间。
我想并行处理该过程,但 运行 变成了 algorithm/math 问题。
例如,我想为 4 个字符长的密码生成 [a-z](26 个字母)的所有组合。 组合总数为 26^4 = 456.976
并行化为 ex。两个进程,我想要一个进程处理前半部分,另一个处理后半部分。每个 228.488 种组合。
现在回答问题... 应该处理后半部分的过程,热到我从数字 228.488 到生成器应该开始的字母组合?
我正在寻找一个通用的解决方案,这样即使更改了字母数或密码长度,它仍然可以使用。 当然这个早就解决了,说不定还有名字呢。我只是不知道那个名字,我不能 google 它。
我正在用 C# 实现这个
谢谢。
您正在探索整个 [a-z]^4
space。 space.
26^4
个不同的元素
只需将 [a-z]^4
的一个元素视为以 26
为基数的 4 位数字。给定一个整数 i
,你可以在 base 26 中找到它的表达式,并得到你正在寻找的 word
。
word[0] = i % 26
word[1] = (i / 26) % 26
word[2] = (i / 26 / 26) % 26
word[3] = (i / 26 / 26 / 26) % 26
如果您有 M
台机器,索引 j
处的机器可以从以下索引启动:j*(26^4/M)
.
因此,如果您的机器从索引开始:228488
,它将以单词开头:
word[0] = 228488 % 26 = 0 => 'a'
word[1] = (228488 / 26) % 26 = 0 => 'a'
word[2] = (228488 / 26 / 26) % 26 = 0 => 'a'
word[3] = (228488 / 26 / 26 / 26) = 13 => 'm'