ホームページ >バックエンド開発 >PHPチュートリアル >[アルゴリズム] 順列と組み合わせのアルゴリズムを見つける
こんな感じです
0~9、a~zの36文字の中からランダムに3つの数字を選び、その順列と組み合わせが何通りあるかを計算してください
アドバイスをお願いします
36 *36*36=46656
36*36*36
忘れてください、私が自分で書いたものです
/** * 排列组合算法 * C($n,$m) * $n 元素的个数 * $m 从$n中取出的元素个数 * $num 组合情况的总数 **/function get_combination($n,$m) { if ((is_int($n) && is_int($m)) && ($m<=$n)){ $a = 1;//初始化 for ($i=1;$i<=$m;$i++){ $a = $n*$a; $b = 1*$i; $n--; } $num = $a/$b; return $num; }}
組み合わせ式: c(n,m)=p(n,m)/m!=n!/ ((( n-m)!*m!)
正しく理解できたと思いますか?
組み合わせ式: c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
あなたの計算は正しいと思いますか?
36*35*34
組み合わせ式によると、それはあなたの半分少ない 7140
です
組み合わせ式: c(n,m)=p(n,m) )/m !=n!/((n-m)!*m!)
あなたの計算は正しいと思いますか?
echo get_combination(3,3);
出力 2
どう考えても間違っています
echo get_combination(3,3)
出力 2
どう考えても間違っています
はい
2つの数字から2つの数字を取り出し、それらを組み合わせて、 1です
配置は2です
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(規定0!=1) .
補足 以下の3つの数字は同じでも構いません
例えば、配列(1, 2)から2つの乱数を取り出して組み合わせると
11
22
12
21
ペア
となります。 2つの数字から2つの数字を取り出す 組み合わせは1
順列は2
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/( n-m)!(0!= 1 と規定します)