यदि आपको लगभग 10 मिलियन अद्वितीय कुंजियों की आवश्यकता है (उदाहरण के लिए), तो सबसे अच्छा तरीका एक कुंजी-स्थान चुनना है जो तेजी से बड़ा हो, और बेतरतीब ढंग से उत्पन्न करना शुरू करें। जन्मदिन विरोधाभास के बारे में पढ़ें - यह मुख्य बात है जिसके बारे में आपको चिंतित होना चाहिए। यदि आप 2^n अद्वितीय और सुरक्षित कुंजी चाहते हैं, तो सुनिश्चित करें कि कम से कम 2^(2 * n) संभावित मान हैं। यहाँ एक मोटा O(n log n) एल्गोरिथम है:
- कम से कम 2^50 के एक प्रमुख स्थान का उपयोग करें (इसलिए, दूसरे शब्दों में, 2^50 संभावित अद्वितीय मानों की अनुमति दें), और आपके पूरे डेटासेट में मुश्किल से कोई टकराव होगा - और आपकी चाबियों को मजबूर करने वाला कोई भी व्यक्ति होगा यदि वे उनमें से 2^25 को आजमाते हैं, तो उनके पास एक कुंजी प्राप्त करने की संभावना समान होती है।
- जितनी चाहें उतनी यादृच्छिक संख्याएं उत्पन्न करें
- डेटाबेस को अपनी कुंजी पर अनुक्रमित करें (यह O(n lg n) चरण है:सॉर्ट करें)
- डीबी के माध्यम से पृष्ठ और डुप्लिकेट को ट्रिम करने के लिए पूरे डेटा सेट पर पुनरावृति (नीचे छद्म कोड)
- डुप्लिकेट पंक्तियां हटाएं, और आपका काम हो गया।
स्यूडोकोड:
$last = null;
while ($current = getnext()) {
if ($last == $current) {
push($toDelete, $current);
}
$last = $current;
}