Mam funkcję która generuje mi losowy string składajacy się z cyfr i liter .
Inna funkcja wypełnia dla sprawdzenia HashSet . Przed każdym wywołaniem funkcji usypiam wątek na 10 ms i generuje 100000 unikalnych rozszerzeń i jest wszystko ok. Jeśli wątku nie usypiam to juz przy 10 , 20 generowaniu mam bład powtórzenia . Czy wykorzystanie klasy Random z uśpieniem watku na 10 ms daje pewność ze 6 cyfrowy string zawsze będzie unikalny ??
Czy potrzeba ci koniecznie 6 liter i cyfr? Jeśli nie, to po co random, nie lepiej użyć klasy guid do generowania unikalnych identyfikatorów?
Tak , rozszerzenie musi składać się z 6 znaków (cyfr i liter)
Nie wiem, czy to pomoże, ale z moich własnych doświadczeń wynika, że obiekt klasy Random należy stworzyć jeden raz na całą aplikację.
TenMateusz953 napisał(a)
Czy wykorzystanie klasy Random z uśpieniem watku na 10 ms daje pewność ze 6 cyfrowy string zawsze będzie unikalny ??
Usypiasz wątek, żeby wygenerować liczbę? A gwoździe wbijasz okiem?
Random się tworzy jako statyczne pole w klasie, a potem wywołuje tylko metodę Next*.
myślałem że jest to oczywiste
tzn. u mnie pole nie jest statyczne ale czy ma to jakiś wpływ na unikalność stringów ? Poza tym tworze tylko jeden obiekt danej klasy .
Statyczne po to, by losowane liczby nie powtarzały się wśród wiele obiektów tego samego typu, jeśli wiele ich utworzy się w tym samym czasie.
Nie trzeba żadnego usypiania wątków, pokaż kod.