[Pascal] losowanie liczb rzeczywistych


(Bolo92) #1

Witam. Muszę napisać program, który będzie wyświetlał tekst losowo od 0,5s do 3s i mam problem, aby ustawić taki zakres losowania pod delay.

time:=random(3)+1*1000;

czyli zakres jest od 1 do 3, później żeby zamienić na ms pod delay(time); mnożę to razy 1000. Wszystko by było fajnie, ale jak wylosować właśnie zakres od 0,5 do 3s, próbowałem zmienną typu real, ale nie poszło. Jak zrobię

time:=time*1000-500

to zrobi mi zakres od 0,5 do 2,5 :confused:


(system) #2

Może zrób losowanie w zakresie od 0 do 3 sekund. Potem zrób warunek który będzie sprawdzał czy wylosowany czas wynosi mniej niż 0,5s, jeżeli tak to przypisuje wartość 0,5 pod czas.

Jeżeli chodzi o Twój kod...

time:=random(3)+1*1000;
  • to tutaj przypadkiem nie wykonuje sie najpierw mnożenie a potem dodawanie?

(Simplex111) #3

Jeżeli czas ma być wyrażony w milisekundach to:

time:= Random(2500) + 500;

Lub od razu:

Delay(Random(2500) + 500);

(Bolo92) #4

Chodziło Ci o to, żeby sprawdził to co wylosował: if (time >=500) then wtedy wykonuje się reszta else losuje jeszcze raz i spr. ? Trochę długie, ale też by działało. Fakt, najpierw by wychodziło mnożenie, później dodawanie. Miałem to zrobione w 2-óch przypisaniach, ale na szybko myślałem, że będzie działać i w jednym jak program chodził to wkleiłem tą jedną linijkę. Użyję jednak sposobu simplex'a

Gdyż mogę wywalić zmienną time i 2 linijki kodu.

Dzięki za pomoc obydwóm :slight_smile:

Pozdrawiam