2015-01-27 6 views
-1
for($x = 0; $x < $count; $x++){ 
    rand(0,$count); 
} 

루프 반환 무작위 INT를 0에서 $ count까지 만들 수 있지만 루프 할 때마다 결코 동일한 결과를 반환하지 않습니다.루프가 무작위 int를 반환하지 않아도됩니다.

$ count가 5 인 경우와 마찬가지로 4,1,0,2,3을 생성합니다.

+0

'$ count'는 어떤 값을 취할 수 있습니까? 항상 소수 일 경우 http://en.wikipedia.org/wiki/Linear_congruential_generator를 작성할 수 있습니다. –

+0

0부터 $ count까지의 값을 가진 배열을 만들고 ('range' 사용) 그 배열을 섞은 다음 새 고유 한 임의 값이 필요할 때마다 해당 배열의 첫 번째 항목을'shift'하십시오. (배열에 실제로 항목이 들어 있기 때문에이 작업을 $ count + 1 번 이상 수행해야하는 경우 다시 새로운 배열로 프로세스를 시작해야합니다.) – CBroe

답변

2

나는 당신이 정말로 "결코"을 의미하지 않는 생각,하지만 난 더 효율적인 솔루션가 알지 단순히 결코 루프

$count = 5; 
$values = range(0, $count-1); 
shuffle($values); 
foreach($values as $value) { 
    echo $value, PHP_EOL; 
} 
0
$count = 4; 
$r  = range(0, $count-1); 
shuffle($r); 
print_r($r); 
0

의 당신의 범위 내에서. 하지만 rand()을 사용해야하는 경우이 방법을 사용해보십시오.

<?php 

$count = 5; 
$arr = array(); 
for ($x = 0; $x < $count;) { 
    $val = rand(0, $count); 
    if (!in_array($val, $arr)) { 
     $arr[] = $val; 
     $x++; 
    } 
} 

print_r($arr); 
?> 
관련 문제