PHP 난수에서 문자와 숫자를 결합하는 방법 처음 두 개는 문자 뒤에 숫자가 오나요?
PHP 난수에서 문자와 숫자를 결합하는 방법 처음 두 개는 문자 뒤에 숫자가 오나요?
위에서 언급한 아이디어가 맞습니다. 난수가 너무 크면 반복이 발생하는 것이 정상입니다. 관심이 있는 경우에는 백만 번 실행하여 결과를 확인할 수 있습니다. 반복 확률은 입니다.
<code>function getRandomString($prefixLength = 2, $suffixLength = 6) { $t = ''; for ($i=0; $i<$prefixLength; $i++) { $salt = mt_rand(1000, 9999); if ($salt % 2) { $t .= chr(mt_rand(97,122)); } else { $t .= chr(mt_rand(65,90)); } } $min = intval(str_pad('1', $suffixLength, '0', STR_PAD_RIGHT)); $max = intval(str_repeat('9', $suffixLength)); return $t . mt_rand($min, $max); } </code>
먼저 임의의 문자를 생성한 다음 임의의 숫자를 생성할 수 있지만 이로 인해 중복이 발생할 수 있으므로 최대한 중복을 피하려면 다음 숫자로만 시작하면 됩니다. 다음 예시를 시도해 보세요
<code>function randomKey(){ $re = ''; $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; while(strlen($re)<2) { $re .= $letter[rand(0, strlen($letter)-1)]; /** 从$letter中随机产生一个字符 */ } $_rand = mt_rand(10000000, 99999999); /** 生成8位随机数 */ list($usec, $sec) = explode(" ", microtime()); /** 获取微秒时间戳 */ $microtime = str_replace(".", "", ((float)$usec + (float)$sec)); /** 处理字符串 */ $result = $re.$_rand.$microtime; }</code>
이런 방식으로 생성된 난수는 다소 길 수 있습니다. 난수를 제거하거나 문자와 미묘한 타임스탬프를 직접 사용할 수 있습니다. 참고용
임의의 문자 두 개를 임의의 배열에 넣은 다음 서로 이어붙일 수는 없나요? 아니면 특별한 도움이 필요한가요?