Liczby losowe

0

Elo!!!

Problem jest taki: funkcja Random(10) wybierze mi liczbe od 0 do 10, ale ja np. chciałbym żeby wybrała mi liczbe z przedziału od 4 do 10, jest na to jakiś sposób albo inna funkcja?

0

if wylosowana liczba jest mniesza od 4 lub wieksza od 10 then.....

zebys nie plakal ;-)

var
WylosowanaLiczba :integer;
begin
Randomize;
WylosowanaLiczba:=Random(20);
Label1.Caption:=IntToStr(wylosowanaLiczba);
if (WylosowanaLiczba <= 4) or (WylosowanaLiczba > 10) then
ShowMessage('Jakis komunikat');
end;
0

A ja zaproponuje moje losowanie "pseudo" przypadkowe działa tylko dla tego przykładu, czyli przypadkowa liczba od 4 do 10

var
i:integer;
begin
Randomize;
i:=Random(10);
if i < 4 then i:= i + 4;
ShowMessage(inttostr(i));
end;

PS: Lofix prosze na razie nie koloruj składni, bo znaczek < jakoś ucieka albo staje się podwojny... nie wiem co jest.

0

function los(iod,ido:integer):integer;
begin
randomize;
los := ( random(ido-iod+1) + iod);
end;

0

http://vcl.4programmers.net/viewapi.html?id=78
Najpierw płaczą o pomoc po polsku a potem nie korzystają :-[

0

Po pierwsze funcja Random(10) wybierze liczbe z przedziału od 0 do 9 (a nie od 0 do 10). Po drugie co za problem wpisać:

randomize;
x:=random(7)+4;

random(7) zwróci liczbe od 0 do 6, a więc x - liczbe od 4 do 10. Po co kombinować ze sprawdzaniem wylosowanej liczby?

0

METAL__FOREVER ma rację!! Jego sposób jest i najprostszy i najbardziej optymalny.
O co Ci biega X_Programmer?
Poza tym sam mogłeś wpaśc na tak proste rozwiązanie ...

0

No nie wiem, chce zeby wylosował mi liczbe z przedziału od 1 do 10 to wylosował mi raz 13, albo 12, nie zabardzo sie to sprawdza, to jest moje rozwiązanie:
[code]
liczba1, liczba2, wynik : integer;

repeat
wynik := Random(liczba2)+1;
until wynik >= liczba1;
[/code]
no sam popatrz na to: random(7)+4, przeciez widac ze jak wylosuje liczbe np. 6 i doda do tego 4 to będzie większa niz 7

SORKA!!!! fakt, on ma racje, ale za duzo motania jest jak np. z programu chce wprowadzic liczby, np między 400 a 600 albo 20 a 560, nie chodzi mi tu o samo 4 a 10.

Uznałem że METAL_FOREVER pomylił sie bo w moim programie to sie nie sprawdzało, ściągnijcie se mój progs "kostka":
http://kubatrt.w.interia.pl/Kostka.zip

0

Jeśli przedział ma się zmieniać, to najprostszy przykład dał Ci Slimy.

0

jeden szit, wychodzi na to samo, ale mój jest chyba najprostrzy i sprawdzi sie wszędzie, nawet jeżeli zakres będzie stały czy zmienny.

0

x_programmer, jeśli w funkcji
x := random(7) + 4 wyjdzie Ci 6 i doda się do tego 4 to będziesz miał liczbę 10. I ot nam przecież chodziło, chcieliśmy mieć liczbę w przedziale 4 do 10, a nie 4 do 6

Funkcja dla przedziału 400 - 600:
[code]x:= random(201) + 400;[/code]

I co w tym trudnego?
Oczywiste jest że ten sposób jest najprostszy! A dla zmiennego zakresu wystarczy zrobić:

[code]dolnyZakres := jakaś_tam_liczba;
gornyZakres := jak_wyzej;
x:= random(gornyZakres - dolnyZakres + 1) + dolnyZakres;[/code]

możesz sobie teraz dowolnie zmienią zmienne dolny i gorny zakres, prawda że proste?

0

Wiem o co ci chodzi, to ja sie przyznaje do błędu bo nie przeczytałem do końca odpowiedzi METAL_FOREVER'a, już wszystko jest ok, looknij sebie na mój program, wrazie błędów piszcie!

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