事實證明,這樣來生成5萬個不同的隨即碼,效率還是很高的,陣列的大小限制也完全足夠應付了。
<?php
$begintime
= microtime
(true);
$min
= 100000;
$max
= 999999;
$isrand
= $rands
= array();
for ($i=
1;$i<=
50000;$i
++) while (isset(
$isrand
[$rand
]));
$rands
= $rand;
$isrand
[$rand
] =
true;
if ($i%
500
== 0)
} echo
microtime
(true
) -
$begintime;
echo
'
'';, print_r
($isrand
, true
), '
?>
不包括插入資料庫部分,執行時間僅為0.1秒,而且我用的還是一台破電腦,效率還是很高的。
**有乙個邏輯錯誤,已經改過來了,疏忽了。$i應該從1起始,小於等於50000
如何高效的生成不重複的隨機數
背景 有個存有1000個問題的題庫,用陣列numhastack存,現要從中隨機生成5道題。如果直接用隨機數生成函式rand 然後把生成的題號存到陣列numgenerate中,會產生重複出現的問題。參考我原來的博文 1.最直接的解決辦法 每隨機生成乙個數,就拿到陣列numgenerate中比較,如果存...
如何讓Fortran生成不同的隨機數
用fortran生成隨機數的方法很簡單,就是 call random seed call random number rd 生成隨機數組可以這樣 do k 1,10 call random seed call random number rd x k rd do something end do 但...
如何得到多個不同的隨機數 洗牌演算法
先來思考乙個問題 有乙個大小為 100 的陣列,裡面的元素是從 1 到 100 按順序排列,怎樣隨機的從裡面選擇 1 個數?最簡單的方法是利用系統的方法math.random 100,這樣就可以拿到乙個 0 到 99 的隨機數,然後去陣列找對應的位置就即可。接下來在思考乙個問題 有乙個大小為100的...