PHP生成N個不重複的隨機數

2022-08-30 17:18:13 字數 837 閱讀 8872

原理就是將陣列順序隨即打亂 ,然取該陣列中的某一段

方法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個不重複的值

<?php 

function norand($begin=0,$end=20,$limit=5)

print_r

(norand());

?>

或者不shuffle的話

<?php 

$tmp=array

();

while(count($tmp)<5)

print

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或陣列標記,這種方法效率比較低,且比較次數呈線性增長,越往後次數越多。所謂 篩選法 就是根據要產生隨機數指定的範圍 起始數必須小於終止數 將這些數全部裝入乙個陣列,然後利用系統...