Jestem rodzaju nowego w Fortran proramming. Czy ktoś może mi pomóc rozwiązać rozwiązanie. Mam problem generując całkowitą liczbę losową w przedziale [0,5] w Fortran liczbę losową z użyciem random_seed i randjak wygenerować liczbę całkowitą losową w fortranie 90 w zakresie [0,5]?
Odpowiedz
Co o:
program rand_test
use,intrinsic :: ISO_Fortran_env
real(REAL32) :: r(5)
integer :: i(5)
! call init_random_seed() would go here
call random_number(r)
! Uniform distribution requires floor: Thanks to @francescalus
i = floor(r*6._REAL32)
print *, i
end program
Użyj 'real :: ...' i '6.', a następnie. Ale proszę, zrób sobie przysługę i przejdź do wyraźnych definicji! –
'i = podłoga (r * 3.) - 1' –
, która jest w porządku, ale czy da jednolity rozkład .....? \ – user3531410
Wspieranie answer Alexander Vogt , Uogólnię.
Wewnętrzny random_number(u)
zwraca rzeczywistą liczbę u
(lub jej tablicę) z rozkładu jednolitego w przedziale [0,1). [Oznacza to, że zawiera 0, ale nie 1.]
Aby mieć dyskretny rozkład jednolity na liczbach całkowitych {n, n + 1, ..., m-1, m} wyrównaj rozkład ciągły w górę do m + 1-W porcje o równych rozmiarach, mapujące każdą porcję na liczbę całkowitą. Jednym ze sposobów może być:
call random_number(u)
j = n + FLOOR((m+1-n)*u) ! We want to choose one from m-n+1 integers
Jak widać, do początkowego pytania dla {0, 1, 2, 3, 4, 5} zmniejsza się
call random_number(u)
j = FLOOR(6*u) ! n=0 and m=5
i dla drugiego przypadku w swoim komentarzu {-1, 0, 1}
call random_number(u)
j = -1 + FLOOR(3*u) ! n=-1 and m=1
oczywiście inne transformacje będą wymagane dla zestawów nieciągłych liczb całkowitych, i należy zwrócić uwagę na kwestie liczbowych.
unikniesz pochylenia ze względu na ograniczoną liczbę bitów w "prawdziwej" mantyzie (53 dla podwójnej precyzji IEEE 754, 24 dla pojedynczej -precision), możesz potrzebować kilka razy wywoływać 'random_number', np. patrz [jak' _randbelow (n) 'jest implementowany przez' random() 'w Pythonie] (https://github.com/python/cpython/blob /1dae7450c68bad498e57800387b24cb103c461fa/Lib/random.py#L243-L248) – jfs
- 1. jak wygenerować liczbę losową od 0,5 do 1,0
- 2. wygenerować losową 64-bitową liczbę całkowitą
- 3. Jak wygenerować "dużą" liczbę losową w Pythonie?
- 4. java- jak wygenerować losową wartość szesnastkową w określonym zakresie wartości
- 5. Jak wygenerować losową liczbę w eliksiru?
- 6. wygenerować krótką liczbę losową w java?
- 7. Jak wygenerować losową unikalną liczbę w PostgreSQL za pomocą funkcji
- 8. Generowanie losowe całkowitą w zakresie w julia
- 9. Zdobądź losową liczbę całkowitą w przedziale (X, Y]
- 10. Jak utworzyć losową 256-bitową liczbę całkowitą w Dart?
- 11. Jak wygenerować losową 64-bitową liczbę całkowitą bez znaku w C
- 12. Jak wygenerować losową liczbę z 8 cyframi w C#? (4 całkowitą, 4 część ułamkową)
- 13. Jak wygenerować losową liczbę typu float w C
- 14. Jak wygenerować ujemną wartość losową w python
- 15. Jak wygenerować losową liczbę przy użyciu stanu funkcjonalnego?
- 16. Jak wygenerować liczbę całkowitą z literału ciągu w czasie kompilacji?
- 17. Obliczanie iloczynu krzyżowego dwóch wektorów w Fortranie 90
- 18. Jak wygenerować powtarzalną losową sekwencję liczb?
- 19. Jak uzyskać liczbę losową w FactoryGirl?
- 20. Jak uzyskać losową liczbę w zestawie szablonów?
- 21. wybrać losową liczbę losową liczbę razy, ale nigdy taką samą liczbę losową dwukrotnie
- 22. Generowanie liczby losowej w zakresie?
- 23. Jak ustawić losową liczbę całkowitą jako wartość domyślną dla Django CharField?
- 24. Generowanie losowego podwójną liczbę pewnym zakresie w Javie
- 25. Jak wygenerować liczbę losową danej liczby dziesiętnej między liczbą 2 w Pythonie?
- 26. Jak wygenerować losową liczbę bez powtórzeń w bazie danych za pomocą PHP?
- 27. WYBIERZ LICZBĘ w zakresie dat
- 28. Jak uzyskać całkowitą liczbę tabel w postgresql?
- 29. Jak zwrócić liczbę całkowitą w java?
- 30. jak uzyskać całkowitą liczbę slajdów w flexslider
'rand' to rozszerzenie GNU. Kombinacja Fortran 95 to 'random_seed' i' random_number'. –
Czy wynik jest dokładnie 5 do przyjęcia? A może chciałeś poprosić o zasięg [0,5]? Poniższe sugestie nie podadzą dokładnie wartości punktu końcowego (z wyjątkiem ewentualnego zaokrąglenia). –
@SteveLionel Nie jestem do końca pewien co masz na myśli ... Czy możesz to rozwinąć? –