我的问题不是语言特定的。我遇到了让循环处理排列的问题。我正在尝试编写代码以显示26^x
的所有值,其中x
是字符串的长度。不会提供输入字符串,因此x=1
如果x=2
显示 a < em>通过 zz 。 az 被视为与 za 不同。
更具体地说,我想为更长的字符串运行它,长度超过100个字符,试图查看包含单词而不是随机字母的给定长度的字符串数。
答案 0 :(得分:1)
根据对该问题的评论,尝试枚举所有可能的100个字符的字符串是不切实际的。
我建议生成给定长度的随机字符串的替代策略,而不是以结构化方式枚举。类似的东西:
count = 0
for i from 0 to simulation_length:
random_string = ''
for j from 0 to string_length:
random_string += random_char()
// containsWord(string) checks if the random string contains a word
// this is tricky in and of itself
if (containsWord(random_string)) count++
...
只要simulation_length足够,随机抽样将为您提供整个空间行为的表示。
答案 1 :(得分:1)
26 ^ x其中x是字符串的长度 ...我想为更长的字符串运行它,长度超过100个字符
你应该忘掉它。
让我们把事情放在眼里。英文字母中有26个字母,因此其中包含100个字符的字符串总数为......
3142930641582938830174357788501626427282669988762475256374173175398995908420104023465432599069702289330964075081611719197835869803511992549376
那是十进制数。以每毫秒1串的速度打印它们需要9.9 * 10 ^ 130年。这比宇宙存在的时间长7.3 * 10 ^ 120倍。
获取单词列表或将字典加载到内存中并改为使用它。
答案 2 :(得分:0)
这取决于你对'单词'的定义。如果'a'是一个单词,则很容易获得在100个字符序列中获得单词的概率的下限(大约为1/1 / e ^ 4)。同样,你可以考虑2个字母的单词和3个字母的单词,并提炼概率。在4或5个字母之后,这个概率变得非常准确,因为几乎没有更长的单词,而且它们随机发生是非常罕见的。