Witam serdecznie,
Tworzę pewien program i potrzebuję funkcji, która potrafi wylosować liczby rzeczywiste od - do w pewnym zaokrągleniu.
Np.
Gdy wpiszę przedział od 0.8 do 1.4 aby losował w zaokrągleniu do 0.0 lub 0.00
Gdy wpiszę przedział od 0.8 do 1.4 aby losował w zaokrągleniu do 0.0 lub 0.00
To zdanie nie ma sensu i brzmi tak, jakby wylosowana liczba po zaokrągleniu miała mieć wartość 0.0
lub 0.00
; Tobie chodzi o zaokrąglenie do jednego lub dwóch miejsc po przecinku, więc tak trzeba było napisać od razu;
Rozwiązaniem jest wylosowanie liczby całkowitej i podzielenie jej przez odpowiednią potęgę 10
; Jeśli potrzebujesz liczby rzeczywistej z przedziału 0.8
do 1.4
z maksymalnie dwoma miejscami po przecinku, to wylosuj liczbę całkowitą z przedziału od 80
do 140
i podziel ją przez 100
; Wynik dzielenia będzie się mieścił w zadanym przedziale;
Jeśli potrzebujesz dokładności do jednego miejsca po przecinku, to losuj z przedziału od 8
do 14
i dziel przez 10
.
A może być tak? Funkcję losującą znalazłem jako jeden z kilku pierwszych wyników w google na Experts Exchange czy jak to się tam zwie. Zawsze MUSISZ zanim tutaj napiszesz SZUKAĆ I KOMBINOWAĆ SAMODZIELNIE do BÓLU i dopiero później pisać z konkretami na forum. Poza tym uważam, że temat raczej nadaje się do działu Newbie. Zahacza tematyką o podstawowe zagadnienia.
program googlujemy_i_kombinujemy_zanim_zapytamy;
{$APPTYPE CONSOLE}
function RandomReal(Lo, Hi : Double) : Double;
var
Range, Hold : Double;
begin
if Lo > Hi then
begin
Hold := lo;
Lo := Hi;
Hi := Hold;
end;
Range := Hi - Lo;
RandomReal := Lo + Random * Range;
end;
var
R : Double;
I : integer;
begin
Randomize;
for I := 1 to 20 do
begin
R := RandomReal(0.8, 1.4);
Writeln(R : 0 : 2);
end;
Readln;
end.