Mailinglisten-Archive |
Tach, bei den Zufallszahlen geht es doch darum, dass der Benutzer, der sich gerade einen Account geholt hat, nicht auf die nächsten Account-Nummern schließen kann. Wie wäre denn folgendes: Deine Range geht von 10000 bis 99999. Jetzt fängst du einfach in der Mitte an, mit 50000, der nächste User bekommt die Mitte zwischen 10000 und 50000, also 25000. Dann gehst Du in die obere Hälfte und der darauf folgende User bekommt die Mitte zwischen 50000 und 99999, also 75000 (hüstel). Danach nimmst Du die Hälfte vom untersten Viertel, also 12500 und dann die Hälfte vom obersten Viertel, also 87500 und dann vom zweit untersten Viertel, also 37500 und so weiter und so fort: 1. User: 50000 2. User: 25000 3. User: 75000 4. User: 12500 5. User: 87500 6. User: 37500 7. User: 62500 ... So kannst Du Dir einigermaßen sicher sein, dass Du erstmal nicht kollidierst, mußt Dir halt merken, in welchem "Schritt" Du gerade bist und durch einen Algorythmus (äh, wie wird das geschrieben? <g>) die kommende Zahl bereichnen. Irgendwann kommst du auf ungerade Brüche, dann mußt Du Dich halt entscheiden, welche der beiden möglichen Werte Du nimmst. Ansonsten würde ich Deine erste Methode empfehlen, denn diese Methode liefert Dir mit EINEM Statement eine Zahl, egal wieviel schon vergeben wurden bzw. noch frei sind. Solltest aber auch davon abhängig machen, mit wieviel Benutzern Du überhaupt rechnest. Wenn es 100 von 89999 möglichen sind, dann kannst Du es ruhig mit den anderen beiden Methoden probieren. Sollten es aber womöglich irgendwann 89999 werden, dann solltest Du auf jedem Fall auf diese Methoden verzichten, bzw. Dir, bis es soweit ist, etwas besseres überlegen :) Mit freundlichen Grüßen aus Stuttgart Thorsten Koch
php::bar PHP Wiki - Listenarchive