Pracuję nad tym od jakiegoś czasu i mam wiele problemów. Chcę wygenerować losową wartość z -1 na 1 dla obliczeń. Nie mogę użyć operatora%, ponieważ jest on przeznaczony tylko dla liczb całkowitych. Próbowałem również używać fmod()
, ale mam tu również trudności.Generuj losowe podwójne od -1 do 1
Co starałem się stosowania był ...
double random_value;
random_value = fmod((double) rand(),2) + (-1);
wydaje się, że to nie jest poprawne, choć. Próbowałem też do materiału siewnego srand z czasem, ale myślę, że robię coś źle tam, bo ciągle rzuca ten błąd:
"error: expected declaration specifiers or '...' before time"
Kod:
srand((unsigned) time(&t));
jakiejkolwiek pomocy z tych problemów byłoby docenić.
rand() nadal zwraca liczbę całkowitą, a potem rzucają go podwoić. Oznacza to, że możliwe rozwiązania to -1,0 i 1, żadne inne podwójne nie są możliwe. Spójrz na [c-random-float-number-generation] (http://stackoverflow.com/questions/686353/c-random-float-number-generation) –
Odpowiedzi dostarczone do tej pory (w tym moje) nie obejmą pełny zakres precyzji dostępny w "podwójnym". Jaką precyzję potrzebujesz? –
Edytowałem swoją odpowiedź, aby odzwierciedlić ograniczenia precyzji. Podaj więcej informacji o swoich wymaganiach, jeśli chcesz czegoś "lepszego". –