可能重複:
Algorithm for generating a random number如何在PHP中生成唯一的隨機數
嗨,我需要一個隨機生成的數字到某些條目分配到數據庫中,它必須是唯一的。 我使用:
$random_number = mt_rand();
mysqli_query($db_connection, "INSERT INTO my_table (rand_num, blabla) VALUES ('$random_number', '$blabla')");
但OFC有可能永遠是一個稍低的機會,2條隨機數將是相同的。 然後我可以這樣做:
function random_check($random_number) {
require_once('db_access.php');
$random_check = mysqli_query($db_connection, "SELECT rand_num FROM my_table");
mysqli_close($db_connection);
$result = 1;
while($row = mysqli_fetch_array($random_check)){
if ($row['rand_num'] == $random_number) {
$result=0
}
}
return $result;
};
$random_number = mt_rand();
$random_check = random_check($random_number);
if ($random_check == 0) {
$random_number = mt_rand();
}
但這隻會覈對數量一次,仍然會有機會,新生成的號碼已經存在到數據庫。
有什麼建議嗎? 感謝
爲什麼不能使用自動增量?此外,您在詢問之前檢查過哪些人:http://stackoverflow.com/search?q=random+number+mysql以及爲什麼他們沒有解決您的問題? – Gordon 2012-01-12 11:47:02
如果你不能使用自動增量,它可以是一個字符串? – Umut 2012-01-12 12:02:25
看看[生日悖論上的這個問題](http://stackoverflow.com/questions/2145510/python-random-is-barely-random-at-all)關於PRNGs和隨機數唯一性的討論。 – ConcernedOfTunbridgeWells 2012-01-12 12:23:57