原理就是將陣列順序隨即打亂 ,然取該陣列中的某一段
方法1:
<?php//range 是將1到100 列成乙個陣列
$numbers = range (1,100);
//shuffle 將陣列順序隨即打亂
shuffle ($numbers
); //
array_slice 取該陣列中的某一段
$result = array_slice($numbers,0,3);
print_r($result
); ?>
方法2:
<?php$numbers = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numbers
); while (list (, $number) = each ($numbers
))
?>
方法3:
用php,在1-20間隨機產生5個不重複的值
<?phpfunction norand($begin=0,$end=20,$limit=5)
print_r
(norand());
?>
或者不shuffle的話
<?php$tmp=array
();
while(count($tmp)<5)
join(',',$tmp
); ?>
PHP 生成N個不重複的隨機數
起因 有25幅作品拿去投票,一次投票需要選16幅,單個作品一次投票只能選擇一次。前面有個程式設計師捅了漏子,忘了把投票入庫,有200個使用者產生的投票序列為空。那麼你會如何填補這個漏子?當然向上級反映情況。但是我們這裡討論的是技術,就是需要生成1 25之間的16個不重複的隨機數,去填補。具體怎麼設計...
不重複隨機數生成
直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...
產生n個不重複的隨機數
這是最容易想到的方法,逐個產生這些隨機數,每產生乙個,都跟前面的隨機數比較,如果重複,就重新產生。可以使用hashtable或陣列標記,這種方法效率比較低,且比較次數呈線性增長,越往後次數越多。所謂 篩選法 就是根據要產生隨機數指定的範圍 起始數必須小於終止數 將這些數全部裝入乙個陣列,然後利用系統...