오운현님!! 한가지만 더요 ^^ > 그누3질답

그누3질답

오운현님!! 한가지만 더요 ^^ 정보

그누보드 오운현님!! 한가지만 더요 ^^

본문

<?
$num = 1;
$max = 3;

$arr = range(0, $max); // 0~9의 정수값을 갖는 배열 생성
shuffle($arr); // 순서를 무작위로 섞는다
for($i=0;$i<$num;$i++) {
echo $arr[$i];
}
?>

위처럼 했을때
0~3 범위내에서 랜덤한 값이 한개 출력이 되는데
그 출력된 값을 제외한 나머지 값(예를 들어 2가 출력되었다 할때 나머지 값은 0, 1, 3)을 랜덤하게 다시 출력하려고 하는데요
제가 머리가 나쁜지 잘 적용이 안되네요..

문제는 위에서 이미 출력된 값을 제외한 나머지 값을 알아내는게 문제인데..
ㅜㅡ 어쩌죠?

다시 한번 부탁좀 드릴께요..
  • 복사

댓글 전체

^^ 제가 말한건 이게 아니었는데.. ㅋㅋ 암튼 오운현님께서 많이 도와주셔서 제가 원하는 바대로 완성할수 있었습니다.
감사합니다. ^^
용도가 무엇인지는 모르겠지만요.

섞은 배열에서 제외할 데이타를 검색하여 빼고 출력하면 되지 않나요?

$max = 3;

$arr = range(0, $max);
shuffle($arr);

for($i=0;$i<count($arr)-1;$i++) {
    if($arr[$i] !=2) echo $arr[$i];    //만약 제외할 값이 2라면
}

제가 원래 뒷북을 잘칩니다...ㅋ

즐거운 하루되세요.
<?
$max = 3;

$arr = range(0, $max);
shuffle($arr);

for($i=0;$i<count($arr);$i++) {
echo $arr[$i];
if($arr[$i] ==0) {
$arr2 = array(1,2,3);
break;
} else if($arr[$i] ==1) {
$arr2 = array(0,2,3);
break;
} else if($arr[$i] ==2) {
$arr2 = array(0,1,3);
break;
} else {
$arr2 = array(0,1,2);
break;
}
}

echo "<p>";
shuffle($arr2);

for($j=0;$j<count($arr)-1;$j++) {
echo "$arr2[$j]";
}
?>

허접하게나마 위처럼 하니까

3

102
-----------------
1

203
-----------------
0

231
-----------------
이런식으로 원하는 값을 출력하게 되네요.

좀더 간단한 방법은 없을까요?
예를 들어, 어느 배열에서 특정 값을 제외한 나머지 배열을 출력하는 함수 같은거요....

알면 알수록 더 알고 싶은게 사람 욕심인가 봅니다 ^^
헉스.. 이뜻이 아닌데...  처음에 for문을 돌려서 나온값을 제외한 나머지 값을 랜덤하게 출력하려고 합니다.
$num=1이기때문에 for문을 돌려서 나온 값은 한개가 되며 그 한개를 제외한 나머지 값을 다시 무작위로 섞어서 for문으로 돌릴려고 합니다.

열심히 연구해 보겠습니다만.. 님들께서도 도와주시면 감사하겠습니다. ^^
© SIRSOFT
현재 페이지 제일 처음으로