zinek Opublikowano 19 Maja 2006 Zgłoś Opublikowano 19 Maja 2006 Witam. Mam problem z losowaniem liczb w C#. Robie to w ten sposób: Random losuj = new Random(); double y; y = losuj.NextDouble(); Chodzi o losowanie liczb z zakresu (0;1). Problem w tym, że program często losuje takie same liczby, jakby to robił w jednym wątku procesora. Jeśli natomiast dołożę instrukcję: Thread.Sleep(10); program losuje znacznie lepiej (im siększa wartość sleep tym lepiej). Tylko, że czas losowania baaaardzo się wydłuża z wiadomych względów. Program losuje bardzo dużo tych liczb i nie mogę sobie pozwolić na taki czas. Program powinien działać pare sekund, tymczasem przy losowaniu np. 10000 liczb losuje pare minut. Jak zadbać, żeby generowane liczby były rzeczywiście losowe (bez powtórzeń) i żeby nie było opóźnień??? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 20 Maja 2006 Zgłoś Opublikowano 20 Maja 2006 Jesli tworzysz nowy obiekt Random do kazej liczby, a losujesz je w petli to nie ma co sie dziwic. Domyslnie Random jest inicjowany aktualnym czasem (ale z dokladnoscia do sekundy), wiec jesli potworzysz kilka obiektow Random w jednej sekundzie to wszystkie beda losowaly takie same liczby. Musisz zmienic podejscie.. jeden obiekt random na caly program inicjowany tylko raz na starcie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
zinek Opublikowano 20 Maja 2006 Zgłoś Opublikowano 20 Maja 2006 dzieki. juz wczoraj do tego sam doszedłem :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...