Wątek przeniesiony 2014-01-24 18:07 z Delphi i Pascal przez ŁF.

Losowanie liczby rzeczywistej z zadanego przedziału

0

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

0

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.

2

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1