Potrzebuję napisać kilka testów junitowych na kodzie Java, który wywołuje Math.random()
. Wiem, że mogę ustawić ziarno, jeśli tworzyłem własny losowy obiekt, aby uzyskać powtarzalne wyniki. Czy istnieje sposób, aby to zrobić również dla Math.random()
?Ustaw seed na Math.random()
Odpowiedz
Sposób Math.random()
wykorzystuje prywatne pole statyczne:
private static Random randomNumberGenerator;
Jeśli naprawdę bardzo trzeba ustawić to do new Random(CONSTANT_SEED)
(na przykład trzeba JUnit kodu testu, który nie masz kontroli nad) Cię można to zrobić, używając odbicia.
Co powiesz na samodzielne utworzenie wystąpienia Random
i użycie go zamiast tego? Math.random()
tworzy jeden i używa go, więc nie sądzę, że możesz zadzierać z jego nasieniem. Jeśli jednak utworzysz plik Random
i użyjesz go bezpośrednio, możesz ustawić dla niego seed, gdy go utworzysz, i/lub możesz zadzwonić później na numer setSeed()
.
Set to przykład losowych ze swoim materiałem siewnym lub po prostu rozszerzenie metod do zwracania wartości musisz
Field field = Math.class.getDeclaredField("randomNumberGenerator");
field.setAccessible(true);
field.set(null, new Random() {
@Override
public double nextDouble() {
return 1;
}
});
Kanoniczna wersja losowa powinna wrócić 4! –
- 1. JavaScript: Math.random
- 2. precyzja Math.random()
- 3. Stubbingowanie Date.now() i Math.random()
- 4. Wyjaśnij Math.floor (Math.random())
- 5. Math.random() kontra Random.nextInt (int)
- 6. Jaki jest najlepszy sposób na seed srand()?
- 7. Math.floor (Math.random()) co robi +1?
- 8. Losowe ziarno Math.random w Javie
- 9. Przewidzieć nasienie skryptu Javascript Math.random
- 10. Python: losowy czas systemowy seed
- 11. Jak zorganizować repozytorium git podczas budowania na projekcie seed
- 12. Ustaw fokus na przycisk
- 13. Portal aplikacji dla programistów Apple może dłużej generować nowy identyfikator Seed Seed ID:
- 14. Klasyfikowanie tablicy Pythona według najbliższego regionu "seed"?
- 15. ustawienie seed dla excel losowej liczby
- 16. NumPy random seed produkuje różne liczby losowe
- 17. Metoda Entity Framework Seed nie jest nazywana
- 18. Magento: Ustaw LIMIT na kolekcji
- 19. Ustaw wartość BOOL na NSMutableDictionary
- 20. Ustaw kolor obramowania na glifphony
- 21. Primefaces: ustaw stronę na datatable
- 22. Ustaw wyliczenie na domyślną wartość
- 23. Ustaw UIView na środku ekranu
- 24. Ustaw wartość na wyliczenie - Java
- 25. Ustaw tekst ComboBox na zaznaczenie
- 26. Ustaw stan BottomSheetDialogFragment na rozwinięty
- 27. Ustaw NullValueHandling na poziomie kontrolera
- 28. Ustaw lokalizację na Heroku Postgres
- 29. ustaw przejście css na piksel na sekundę
- 30. Ustaw NA na 0 w R
mógłbyś ewentualnie opracować na części odbicia odpowiedź proszę? –