Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP计算字符串的组合取决于字符串_Php_Math - Fatal编程技术网

PHP计算字符串的组合取决于字符串

PHP计算字符串的组合取决于字符串,php,math,Php,Math,这是一个场景: 有这样的字符串: $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 我有一个方法,可以生成一个随机字符串,其长度取决于变量字符: public function generateCodes($length, $qty) { $codes = []; if ($length > 0 && $qty > 0) { for ($i =

这是一个场景:

有这样的字符串:

$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
我有一个方法,可以生成一个随机字符串,其长度取决于变量字符:

public function generateCodes($length, $qty)
    {
        $codes = [];

        if ($length > 0 && $qty > 0) {
            for ($i = 0; $i < $qty; $i++) {
                $code = '';
                for ($i = 0; $i < $length; $i++) {
                    $code .= $characters[mt_rand(0, strlen($characters) - 1)];

                    if (!in_array($code, $codes)) {
                        $codes[] = $code;
                    }
                }
            }
        }
    }
公共函数生成代码($length,$qty)
{
$codes=[];
如果($length>0&&$qty>0){
对于($i=0;$i<$qty;$i++){
$code='';
对于($i=0;$i<$length;$i++){
$code.=$characters[mt_rand(0,strlen($characters)-1)];
if(!in_数组($code,$code)){
$code[]=$code;
}
}
}
}
}
我想要的是计算特定$长度的可能唯一代码。但我怎样才能做到这一点呢

这是我目前的尝试,但我没有考虑重要的事情。

public function calculateCombinations($length)
    {
        $combinations = 0;

        if ($length > 0) {

            for ($i = 0; $i < $length; $i++) {
                $combinations = $combinations + pow(2, $length -1);
            }
        }

        return $combinations;
    }
公共函数计算组合($length)
{
$combines=0;
如果($length>0){
对于($i=0;$i<$length;$i++){
$combines=$combines+pow(2,$length-1);
}
}
返回$组合;
}
正确的公式是什么?
提前谢谢

如果你只是想要唯一代码的可能数量,它将是n!但是如果你想得到可能的答案,你可以,它将打破这个系统,每个字母可以是36个选项中的一个,因此你将有36^l个可能的组合(其中l是长度)。现在,如果你想要所有长度小于l的可能组合,那么它是(Sum_i^l 36^i),这更像是一个数学问题,而不是一个编程问题。你应该学习一些关于组合的知识->是的,我知道这是一个数学问题,希望这里有人能把我推向正确的方向。那么apokryfos的建议有什么问题?如果它是错误的,您能提供一个小长度
的数字示例,例如3吗?