Toon posts:

[delphi] Random is niet Random meer.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Nou ben ik geen delphi ster maar er zit nu wel iets heel raars in mijn programma.
Ik laat steeds vierkanten aanmaken, die stop ik in een array.

for i:= 0 to 14 do
begin
obs[i]:=rect(Random(250),Random(250),obs[i].Left+20, obs[i].Bottom+20);

zie zo, alleen heb ik het idee dat de random niet random meer is, of iedergeval komt er steeds de zelfde waarde uit.
Nu ben ik al bezig geweest met destroy & free van de array (obs), dat lukte me niet omdat ik niet weet hoe(hellaas doet de zoek functie het niet :'(

Verwijderd

randomize aangeroepen voor je begon?

  • Neman
  • Registratie: September 2000
  • Laatst online: 30-08 12:47

Neman

Een uit de lucht gegrepen naam

Zet er eens
code:
1
randomize();
boven, dan werkt het wel verwacht ik zo.

  • getty
  • Registratie: Januari 2001
  • Laatst online: 28-08 13:19
[Zeur mode]
Random is toch nog nooit echt random geweest?
[/Zeur mode]

A computer is almost human - except that it does not blame its mistakes on another computer.


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Verwijderd schreef op 03 augustus 2002 @ 23:16:
code:
1
2
3
for i:= 0 to 14 do
begin
obs[i]:=rect(Random(250),Random(250),obs[i].Left+20, obs[i].Bottom+20);

zie zo, alleen heb ik het idee dat de random niet random meer is, of iedergeval komt er steeds de zelfde waarde uit.
Twee vraagjes, mocht de Randomize optie niet hebben geholpen:
1. Klopt het dat je in de loop alleen de Left en Top van de TRect random probeert te maken? En ik zie dat je in de loop voor de Right en Bottom waarden in de Rect functie gebruik maakt van waarden die al in obs[i] zitten. Dat is toch hopelijk de bedoeling :?

2. Vetgedrukte gedeelte in de quote. WAT is er precies niet random? Krijg je binnen de loop altijd dezelfde Left en Top waarden (de Random() waarden dus), of krijg je elke keer dat je de procedure aanroept eenzelfde reproduceerbaar setje getallen?

Verwijderd

Topicstarter
Dank u, dat randomize werkt puik. Het ging erom dat ik steeds op een andere plek een rechthoek krijg. Nu werkt ie goed.
ENNNE getty, het is natuurlijk een mooi filosofies onderwerp, is een random waarden op een computer random.

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

randomize initieren met de klok v/d PC (timer) geeft best wel random waarden

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

dat doet Randomize(). Het is ook weer belangrijk om randomize maar 1x aan te roepen in je programma's leven, want anders is het weer niet zo random

We adore chaos because we like to restore order - M.C. Escher


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:45

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 04 augustus 2002 @ 11:55:
Dank u, dat randomize werkt puik. Het ging erom dat ik steeds op een andere plek een rechthoek krijg. Nu werkt ie goed.
ENNNE getty, het is natuurlijk een mooi filosofies onderwerp, is een random waarden op een computer random.
Dat is geen "filosofies" onderwerp hoor, dat is gewoon niet zo :)
Men pakt een waarde, en laat daar een bepaalde berekening op los. Hier komt dus een nieuwe waarde uit (je "random" waarde). Vervolgens als je een nieuwe random waarde opvraagt, wordt dezelfde berekening opnieuw uitgevoerd met de laatste "random" waarde.

Vandaar dat je zonder randomize elke keer dezelde waarden krijgen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
ja das waar maar aangezien een computer duigitaal is zitten alle waardes al vaast gebakken.
Ook al heb je een super computer dan nog kan het nooit totaal random zijn. Of je moet analoge computer hebben

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Onder GNU/Linux heb je daar /dev/random voor. Dat zijn 'echtere' random getallen, die gebaseerd worden op ao, de toesten & de tijd tussen de toetsaanslagen, Interrupts van devices etc...

/dev/random is een 'schaars' goed :)
/dev/urandom geeft oneindig pseudorandom getallen.

Verwijderd

Volgende keer wel ff wat beter de help doorspitten. In elke voorbeeld functie / procedure waarin random voorkomt, wordt eerst randomize(); aangeroepen. :)

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Verwijderd schreef op 04 augustus 2002 @ 13:34:
Ook al heb je een super computer dan nog kan het nooit totaal random zijn. Of je moet analoge computer hebben
[zeur]
Ook een analoge computer kan geen random getallen genereren. Alles is wel terug te beredeneren via natuurkundige weg.
Men denkt (of dacht toen ik het ergens las) dat alleen de quantummechanica random is.
[/zeur]

Verwijderd

[zeur]
volgens mij is dat ook niet random, maar gecontroleerde chaos (ofzoiets)
[/zeur]
Pagina: 1