Losowanie

0

Czy polecenie random(x) losuje liczbe z zakresy 0 do X czy to mnie się coś miesza ?--Delphi 6
Pozdrawiam All

0

funkcja random(x) losuje liczbe z zakresy 0 do x :)))))

-=-=-=-=-=-=-=-=-
Delphi 3, 6
-=-=-=-=-=-=-=-=-
LKS
-=-=-=-=-=-=-=-=-

0

No właśnie - ale ta funkcja jest jakaś kopnięta.
Włącze program - losuje liczby - wyłączam.
Włączam drugi raz a ona losuje te same liczby.
I tak za każdym razem. Nie ma jakieś innej funkcji
która naprawde wybiera losowe liczby ?--Delphi 6
Pozdrawiam All

0

MCkawa [mailto:[email protected]] w dniu 9.3.2002 0:2 napisal:
No właśnie - ale ta funkcja jest jakaś kopnięta.
&gtWłącze program - losuje liczby - wyłączam.
&gtWłączam drugi raz a ona losuje te same liczby.
&gtI tak za każdym razem. Nie ma jakieś innej funkcji
&gtktóra naprawde wybiera losowe liczby ?
&gt
&gt--
&gtDelphi 6
&gtPozdrawiam All

Musisz poprzedzic te funkcje poleceniem Randomize;--Pozdrawiam!
Adam Boduch
www.4programmers.net

0

A o jakim jezyku mova?

               K_asm_il--Pozdrawiam

VdK

0

Chcialem looknac na to;)--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

0

Z tego co wiem to funkcja random(x) zwraca liczbe z przedzialu &lt0;x-1&gt

0

Wielkie dzięki--Delphi 6
Pozdrawiam All

0

jesli mi sie dopshe zdaje, to zwraca tak jak napisal zylo, jesli x jest calkiwite i wiekshe od jeden, Jasli x=1, to zwraca liczbe rzeczywistom z przedzialu &lt0,1). Chyba ze sie myle...--Delphi 4

Skysh The God, Your Slave

0

Ray Lischner. Delphi.Almanach:

[Funkcja Random] wywolana bez argumentow zwraca liczbe zmiennoprzecinkowa z zakresu 0&lt=x &lt1. W drugiej formie Random przyjmuje argument w postaci liczby calkowitej i zwraca liczbe calkowita z przedzialu 0 &lt= x &lt Range.

PS. W module Math sa dodatkowe funcje, takie jak:

Delphi Help:

function RandomRange(const AFrom, ATo: Integer): Integer;
RandomRange returns a random integer from the range that extends between AFrom and ATo (inclusive). RandomRange can handle negative ranges (where AFrom is greater than ATo)

albo:

function RandG(Mean, StdDev: Extended): Extended;
RandG produces random numbers with Gaussian distribution about the Mean. This is useful for simulating data with sampling errors and expected deviations from the Mean.

--Pawel

Delphi6

0

Czyli jest jak powiedzialem zwraca random(x) zwraca liczbe z przedzialu &lt0,x-1&gt, do skysh'a: tak jak stwierdziles tylko skomplikowanie zapisales random(1) zwraca zawsze 0

0

Ciekawe jest to ze funkcja random jest powiazana z iloscia sekund (lub milisekund), ktore uplynely od polnocy, zwieksza to prawdopodobienstwo na nie wystapnie pod rzad tych samych liczb. [przynajmniej tak bylo w starym dobrym QBasicu i TP]. Dlatego potrzebna jest poprzedzajaca funkcja Randomize....-------[ Delphi 6 Rulez 4 Ever!, przynajmniej do czasu gdy naucze sie C++ :) ]------

0

Wydaje mi sie, ze funkcja Random nie jest powiazana z czasem. O ile wiem, generator pseudolosowy jest funkcja, ktora generuje ciag liczb wygladajacy na losowy. Jako argument funkcji stosuje sie jej wartosc z poprzedniego wywolania. No ale od czegos trzeba zaczac. Dlatego bez Randomize program wykorzystujacy Random bedzie dawal zawsze te same wyniki - bo bedzie zaczynal od tego samego. Zeby tego uniknac, trzeba wywolac Randomize, ktora ustawi zmienna RandSeed czyli 'ziarno' generatora psedudolosowego zapoczatkowujac ciag. Do ustawienia zmiennej Randomize uzywa czasu dnia, bo dokladny moment uruchomienia programu jest do pewnego stopnia losowy i rzadko dokladnie identyczny. W wypadku programow uruchamiajacych sie (automatycznie) zawsze o tej samej godzinie, konieczne jest zaladowanie RandSeed inaczej uzyskana wartoscia losowa.--Pawel

Delphi6

0

Na pewnej madrej stronie napisali [pq zwroc uwage na --&gt &lt--]:
"Software random number generators apply a function to a RandSeed which cycles the seed through its possible values in a quasi-random way. Each call to the random number generator does one iteration of the function, and returns a result based on the new seed value.
When your program loads, this seed will have some default value (probably 0). If you do not change the seed, a series of calls to the random number generator will yield the same series of "random" numbers every time your program is run. (Obviously, this will make it easier to track down the bugs!) --&gtTypically, the system clock is used to provide a value for the random number seed:&lt-- Even if a given task is always run at the same time of day, a difference of a few milliseconds is enough to put a good random number generator in an entirely different part of its sequence. In Borland Pascal, the command to randomize the seed is (surprise!) Randomize. Note that you should only call this routine once per program, when it first loads, or at the very least at times separated by minutes or hours - calling it on every timer tick (say) will just reset the 'random' sequence several times a second!"

-------[ Delphi 6 Rulez 4 Ever!, przynajmniej do czasu gdy naucze sie C++ :) ]------

0

Zwrocilem uwage na --&gt &lt--. Jak na moja znajomosc jezyka Shakespeare'a, to na madrej stronie jest napisane dokladnie to samo co w moim poscie. Ale moze czegos nie rozumiem. Dla jasnosci: oto co rozumiem.

  1. Random generuje kolejna wartosc 'ziarna' (w delphi zmienna RandSeed) na podstawie poprzedniej jego wartosci produkujac pseudolosowy ciag.
  2. Przy kazdym uruchomieniu programu ziarno ma identyczna wartosc (w Delphi jest to zero), wiec ciag rozpoczety od tej wartosci bedzie identyczny.
  3. Nalezy wiec zainicjowac ziarno wartoscia losowa na poczatku programu.
  4. Dobra wartoscia losowa moze byc stan zegara w momencie startu programu (z zastrzezeniem jak w moim poscie powyzej).
  5. W Borland Pascalu - tak jak w Delphi - procedura Randomize inicjuje ziarno stanem zegara.

A na przyklad w PowerBasicu polecenie Randomize wymagalo podania wartosci ziarna, co umozliwialo wygenerowanie ciagu pseudolosowego zaczynajacego sie od zadanej wartosci. Zeby zainicjowac zegarem trzeba bylo napisac Randomize Timer. Z kolei, zeby w Delphi wygenerowac ciag od zadanej wartosci nalezy po prostu: RandSeed:=Wartosc;

Oswiec mnie gdzie jest rozbieznosc miedzy mna a madra strona - wydaje mi sie jednak ze takowej nie bylo, jeno jakowes nieporozumienie. A jesli chodzi o czesc za znakiem &lt--, dotyczaca kilku milisekund - to OK, ale teoretycznie moga byc systemy w ktorych tych kilku milisekund roznicy nie bedzie, lepiej sie wiec zabezpieczyc.

Pozdrowienia

--Pawel

Delphi6

0

Jakby nie patrzec Random, czy tez Ranodmize ma jednak cos wspolnego z zegarem systemowym [a tylko o to mi choidzlo], a reszta jest tak jak mowisz. W/g mnie racje mamy obaj :).-------[ Delphi 6 Rulez 4 Ever!, przynajmniej do czasu gdy naucze sie C++ :) ]------

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