在編寫我的應用程序時,我想爲我的數據庫中的某些實體提供隨機標記,例如ABCD。這些總是四個字符,可以包含大寫字母和數字。使隨機字符串不在數據庫中
問題是,如何分配它們?我們絕不會用160萬點的可能性,這提供,但隨着數據庫變得更加飽滿,在「尋求」的時間,用通過這種L4僞碼隨機字符串得到成倍長:
function makeUniqueKey() {
while (true) {
$key = strtoupper(str_random(4));
if (!DB::table('items')->where('key', '=', $key)->count()) {
return $key;
}
}
}
我想這是更多的是強迫症的好奇心問題,但是爲了創建數據庫中的項目的隨機唯一鍵,非指數算法有沒有什麼巧妙的技巧?
'while'循環最終會變成無限長,並帶有4個字符的隨機字符串。只有這麼多組合。 –
是的,執行時間將接近無窮大,因爲表中的條目數量爲'(字符)^(字符串長度)' –