0

我正在创建一个长度为 10 个字符的单词列表。具有 78 个字母(az、AZ、0-9 和特殊字符)的字符组合。我想生成可以用这种条件生成的每一个单词。我在 PHP 中执行此操作.. 想知道我会得到多少字?

for($i=0;$i<=608400;$i++) {
                    $special_char=array("'","/","@,","#","$","%","(",")",",","?","[","]","+","=","!","*");
                    $original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'),$special_char);
                    $original_string = implode("", $original_string);
                   $char[]=substr(str_shuffle($original_string), 0, $length);
                }

例如:字符长度为2,字符组合为“a”和“b”。我会得到“ab”和“ba”这两个词。所以总数是2。

4

2 回答 2

1

4566176969818464000

从这个网站: http: //www.mathsisfun.com/combinatorics/combinations-permutations-calculator.html

可供选择的类型?78

选号?10

订单重要吗?是的

是否允许重复?不

简短答案:4.56617696e+18

完整答案:4566176969818464000

于 2013-11-07T15:11:33.240 回答
0

从您的问题的原始形式来看,是否允许使用相同的字符有点不清楚(描述表明它们是,但示例表明它们不是)。

如果允许,则 78 中的任何字符都可以作为单词的第一个字符。第二个字符可以从总共 78 个字符的字母表中再次选择,与第一个字符无关:再次有 78 种可能性。以此类推,每个字符有 78 种可能性,我们可以独立选择,所以可以简单地相乘,得到 78^10 的最终答案。

如果不允许重复,答案会略有不同。我们仍然可以选择 78 个字符中的任何一个作为单词的第一个字符。但是无论我们选择哪个字符,第二个字符只有 77 个可能,因为我们不能重复第一个字符。第三个不应该匹配前两个中的任何一个,给我们留下 76 种可能性,依此类推。因此,这种情况下的答案是 78*77*76*75*74*73*72*71*70*69=78!/(78-10)!。

于 2013-11-07T19:49:15.160 回答