Mam aplikację C++, która wywołuje rand() w różnych miejscach. Czy muszę regularnie inicjować srand()
, aby upewnić się, że rand() jest w zasadzie losowy, czy wystarczy wywołać go raz, gdy aplikacja się uruchomi?Jak często powinienem wywoływać srand() w aplikacji C++?
Odpowiedz
Jeśli masz tylko jeden wątek, materiału siewnego raz. Jeśli często wybierzesz ponownie, możesz przerwać niektóre statystyczne właściwości liczb losowych. Jeśli masz wiele wątków, nie używaj rand
w ogóle, ale raczej coś podobnego, drand48_r
threadsafe który pozwala utrzymać stan per-thread (więc można materiału siewnego raz w wątku).
+1 za wzmiankę o wątkach. – juanchopanza
boost :: random jest bardziej mobilny niż drand48_r lub użyj 0x C++ random (która jest pochodną Boost) – MSalters
@MSalters: Oczywiście, że pójdę do nowego ''
zadzwoń raz, gdy aplikacja się uruchomi
Tylko raz, na początku zgłoszenia.
No właśnie dzwoni raz jest w porządku. Użyj wartości początkowej, aby losowa kolejność była taka sama dla każdego wykonania. Może to być przydatne przy ustalaniu (na przykład) deterministycznego zachowania gry podczas odtwarzania jej w celu debugowania.
- 1. Zasięg srand() w C++
- 2. Czy powinienem zawsze wywoływać Page.IsValid?
- 3. Jak często należy poddawać recyklingowi pulę aplikacji?
- 4. Jak wywoływać drawRect programowo w celu c
- 5. Jaka jest różnica między srand (1) a srand (0)
- 6. Programowo wywoływać webmethods w C#
- 7. Jak często aktualizowane są statystyki aplikacji Market?
- 8. Jak wywoływać funkcje Matlab z C++
- 9. Czy powinienem wywoływać implementację klasy podstawowej podczas przesłonięcia metody w języku C# dla ASP.NET?
- 10. Jak korzystać z funkcji srand() z time.h?
- 11. Jak wywoływać Objective-C "self" z metody C
- 12. Jak powinienem zadeklarować ciągi w strukturach C?
- 13. Czy powinienem zachować plik otwarty, czy powinienem często otwierać i zamykać?
- 14. Indeksowanie w mongoid: kiedy i jak często powinienem uruchamiać rake db: mongoid: create_indexes?
- 15. Jak często używane są układy Xilinx?
- 16. Jak rekursywnie wywoływać makro w jinja2?
- 17. Jak dynamicznie wywoływać moduł w Erlangu?
- 18. C++ Czy poprawnie wywoływać "atrybuty" członków klasy?
- 19. Co powinienem się zalogować w aplikacji produkcyjnej
- 20. Jak często wykonywany jest GK?
- 21. Jak często są synchronizowane NSUserDefaults?
- 22. Jak wywoływać rozszerzenia typu F # (statyczne funkcje składowe) z C#
- 23. Jak wywoływać funkcje/metody C++ za pomocą JavaScript
- 24. Jak często wykrywasz obsługę javascript w przeglądarkach?
- 25. Jaki jest najlepszy sposób na seed srand()?
- 26. Jak powinienem obsługiwać autoryzację/uwierzytelnianie w mojej aplikacji Asp.net MVC?
- 27. Jakiego SRID powinienem użyć w mojej aplikacji i jak?
- 28. Jak wywoływać jquery ajaxStart + ajaxComplete
- 29. Czy srand (time (NULL)) jest zły?
- 30. Jak wywoływać akcję wewnątrz akcji w Vuex
'srand' nie robi' rand' "więcej" random. W żaden sposób nie zapewnia "rozsądnej przypadkowości". Po prostu powoduje, że sekwencja liczb losowych zaczyna się od określonego punktu. – jalf