0
我有兩個不同的函數,一個從值0-51(唯一)生成5個隨機卡,一個包含包含這5個卡的數組的函數,以及一個包含一些數字的數組來自陣列#1將被存儲。PHP唯一編號不唯一
函數兩個函數二是如果值不在數組#2中,則將新值替換爲數組#1。 這裏似乎有些問題。生成一些數字後,我得到:
array(27,18,37,27,45)
從newCards函數返回。
問題:如何修復newCards函數100%做它應該做的事情? (也可以使用第一個數組,檢查數字是否在第二個數組中,如果沒有,在這裏也是唯一的),因爲它返回了兩個相同的數字,所以出現了錯誤。
代碼:
function UniqueCards() {
$result = array();
while(count($result) != 5) {
$rand = rand(0,51); // reads as 0 = 1, and 51 = 52. aka starts at zero.
if(!in_array($rand,$result)){
$result[] = $rand;
}
}
return $result;
}
function newCards($input,$exclude) {
$i = 0;
$output = array();
while($i < count($input)) {
$rand = rand(0,51);
if(in_array($input[$i], $exclude)) {
$output[$i] = $input[$i];
$i++;
}
else if(!in_array($rand, $input)){
$output[$i] = $rand;
$i++;
}
}
return $output;
}
[的範圍內生成唯一隨機數 - PHP]的可能重複(http://stackoverflow.com/questions/5612656/generating-unique-random-numbers-within-a-range-php) – bardzusny
似乎你正在使用這個問題的代碼:http://stackoverflow.com/q/29938271/3933332,你看過所有其他的答案,哪裏有? – Rizier123
是的。我試過了。唯一不同的是不按性能殺死功能,不完整,產生數字的方式落後於其目的等。 – maria