我正在创建一个长度为10个字符的单词列表..包含78个字母(a-z,A-Z,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。
答案 0 :(得分:1)
<强> 4566176969818464000 强>
从此网站:http://www.mathsisfun.com/combinatorics/combinations-permutations-calculator.html
可供选择的类型? 78
号码被选中? 10
订单重要吗?是
允许重复吗?否
简答:4.56617696e + 18
完整答案:4566176969818464000
答案 1 :(得分:0)
如果允许或不允许相同的字符,那么从问题的原始形式中可能有点不清楚(描述表明它们是,但是示例表明它们不是)。
如果允许,则78的任何字符都可以是该单词的第一个字符。可以从总共78个字符的字母表中再次选择第二个字符,独立于第一个字符:78种可能性。依此类推,每个角色有78种可能性,我们可以独立选择,所以这些可以简单地相乘,给出78 ^ 10的最终答案。
如果不允许重复,答案会略有不同。我们仍然可以选择78个字符中的任何一个作为单词的第一个字符。但无论我们选择哪个角色,只有77个可能的第二个角色,因为我们不能重复第一个角色。第三个不应该匹配前两个中的任何一个,留下76个可能性,依此类推。因此,在这种情况下的答案是78 * 77 * 76 * 75 * 74 * 73 * 72 * 71 * 70 * 69 = 78!/(78-10)!。