나는 사용자를위한 임의의 보안 번호를 만드는 스크립트를 만들고 있는데, 나는 이것을 완료 할 수있는 방법을 찾고있다.PHP 루프 질문
보안 번호는 7 자리가 필요하지만 0은 포함되어 있지 않습니다. rand(1111111,9999999)
을 사용할 때 0
이 그 번호 안에있을 가능성이 있으며, 어떤 루프가 이것을 확인하는 것이 가장 좋을지 궁금합니다. 문자열에 0이 있는지 확인하기 위해 어떤 함수를 사용해야합니까?
나는 사용자를위한 임의의 보안 번호를 만드는 스크립트를 만들고 있는데, 나는 이것을 완료 할 수있는 방법을 찾고있다.PHP 루프 질문
보안 번호는 7 자리가 필요하지만 0은 포함되어 있지 않습니다. rand(1111111,9999999)
을 사용할 때 0
이 그 번호 안에있을 가능성이 있으며, 어떤 루프가 이것을 확인하는 것이 가장 좋을지 궁금합니다. 문자열에 0이 있는지 확인하기 위해 어떤 함수를 사용해야합니까?
1에서 9 사이의 임의의 숫자를 7 번 연결하지 못했습니다?
rand(1,9)
이 코드는 당신이 필요로하는 무엇을 수행해야합니다
는$num = '';
for ($i = 1; $i <= 7; $i++)
$num .= rand(1, 9);
$num = (int) $num;
이 무작위로 숫자 하나 하나를 생성하고 그들과 함께 문자열을 작성합니다. 그런 다음 문자열을 정수로 변경합니다.
확인하는 동안 사용하면 총 9^7 건이 발생하므로 도움이되지 않습니다. 다음 번에 어떤 사건을 당할 지 알 수 없습니다. 그래서 rand를 7 번 사용하는 것이 좋습니다.
<?php
function myRand($length){
$ans=0;
for($i=0;$i<$length;$i++){
$ans=$ans*10+rand(1,9);
}
return $ans;
}
echo myrand(7);
?>
솔루션 기반 9.
$p = array();
$p[0] = 1;
for ($i=1; $i<=6; $i++):
$p[$i] = $p[$i-1] * 9;
endfor;
$max = $p[6] * 9 - 1;
$rand = rand(0,$max);
$ret = array();
for ($i=6; $i>=0; $i--):
$tmp = $rand/$p[$i];
$tmp = floor($tmp);
$rand = $rand - $p[$i] * $tmp;
$ret[] = (string)($tmp + 1);
var_dump($tmp);
endfor;
$ret = implode($ret);
var_dump($ret);
내가 그 생각을하지, 감사를 기반으로! :) –
대답을 수락하기 위해 3 분을 기다려야합니다. –