Wiem, że mogę generować losowe pływaki z randem (max). Próbowałem generować zmienną w zakresie, nie powinno to być trudne. Ale np. Rand (1.4512) zwraca 0, więc rand nie oblicza za pomocą spławików. Teraz wypróbowałem małą sztuczkę, przekształcając rzecz w liczbę całkowitą i po losowaniu numeru dopasowania w moim pożądanym zakresie, obliczając go z powrotem na pływak ... który nie działa.Jak najlepiej utworzyć losowy float w zakresie między dwoma pływakami
Moje pytanie brzmi: jak to zrobić w lepszy sposób. Jeśli nie ma lepszego sposobu, dlaczego ten nie działa? (Może dla mnie już za późno, powinienem był spać 2 godziny temu ...). Całość ma być metodą obliczania pola "pozycji" dla rekordów bazy danych, aby użytkownicy mogli zamawiać je ręcznie. Nigdy wcześniej czegoś takiego nie robiłem, może ktoś może mi wskazać lepsze rozwiązanie.
Oto kod do tej pory:
def calculate_position(@elements, index)
min = @elements[index].position
if @elements[index + 1].nil?
pos = min + 1
else
pos = min + (rand(@elements[index + 1].position * 10000000000)/10000000000)
end
return pos
end
Dzięki!
Jeśli odpowiedzi poniżej są nie do przyjęcia, czy mógłbyś wyjaśnić ten problem? – Josh
Dziękuję wszystkim za odpowiedzi, czyste i dobrze wyjaśnione – pduersteler
@ Odpowiedź sandor_bedo jest prawdopodobnie najlepsza tutaj: 'rand (-34.0..53.8) ' – Automatico