php로 1~3위 랜던추첨 연습 중인데,,,

php로 1~3위 랜던추첨 연습 중인데,,,

QA

php로 1~3위 랜던추첨 연습 중인데,,,

본문

<?php

 

$rank1 = rand(1,30);

$rank2 = rand(1,30); 

$rank3 = rand(1,30); 

 

echo '1위: ' . $rank1;

echo "<br>";

 

echo '2위: ' . $rank2;

echo "<br>";

 

echo '3위: ' . $rank3;

?>

 

 

 

2등 경우, 1위에 뽑힌 숫자를,

3등 경우, 1~2위에 뽑힌 숫자를 제외하고 추첨하려면 어떻게 변형하면 될까요?

 

!=  연산자를 어떻게 써먹어야할지 감이 안 오네요. ㅎ

 

이 질문에 댓글 쓰기 :

답변 2

물론 클래스로 사용하여 짜면 좀더 좋겠지만...

일단 재귀함수라는 개념을 공부하시면 좋을듯.



<?php

function randomnum($num1 = 0, $num2 = 0){

$result = rand(1, 30);


if($num1 == $result) $result = randomnum($num1, $num2);

if($num2 == $result) $result = randomnum($num1, $num2);


return $result;

}


//1등

$num1 = randomnum();

$num2 = randomnum($num1);

$num3 = randomnum($num1, $num2);


echo $num1;

echo $num2;

echo $num3;

?>

 

아주 잘 되네요. 덕분에 randumnum이라는 함수도 알게되었네요.  감사합니다. ^^




<?php
function randomnum($num1 = 0, $num2 = 0){
$result = rand(1, 30);

if($num1 == $result) $result = randomnum($num1, $num2);
if($num2 == $result) $result = randomnum($num1, $num2);

return $result;
}

//1등
$num1 = randomnum();
$num2 = randomnum($num1);
$num3 = randomnum($num1, $num2);

echo "1위: " . $num1;
echo "<br>" ;
echo "2위: " . $num2;
echo "<br>" ;
echo "3위: " . $num3;

$rank1 = rand(1,30);

$rank2 = rand(1,30); 

while ($rank2 == $rank1) {

$rank2 = rand(1,30);

}

$rank3 = rand(1,30);

while (in_array($rank3, array($rank1, $rank2)) {

$rank3 = rand(1,30);

}

답변 감사합니다. 근데, 위 코드는 에러가 나네요.  아래처럼 넣어봤습니다.



<?php
 
$rank1 = rand(1,30);
$rank2 = rand(1,30);
while ($rank2 == $rank1) {
$rank2 = rand(1,30);
}
$rank3 = rand(1,30);
while (in_array($rank3, array($rank1, $rank2)) {
$rank3 = rand(1,30);
}
 
echo '1위: ' . $rank1;
echo "<br>";
 
echo '2위: ' . $rank2;
echo "<br>";
 
echo '3위: ' . $rank3;



테스트는 아래 주소에서...했어요.
http://phptester.net/

아래처럼 11라인에 소괄호를 하나 더 넣어주니, 잘 되는 것 같네요. 답변 감사합니다.


<?php
 
$rank1 = rand(1,30);

$rank2 = rand(1,30);
while ($rank2 == $rank1) {
$rank2 = rand(1,30);
}

$rank3 = rand(1,30);
while (in_array($rank3, array($rank1, $rank2))) {
$rank3 = rand(1,30);
}
 
echo '1위: ' . $rank1;
echo "<br>";
 
echo '2위: ' . $rank2;
echo "<br>";
 
echo '3위: ' . $rank3;

답변을 작성하시기 전에 로그인 해주세요.
전체 2

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT