In de gegeven codevoorbeelden zo ik zag snel nergens de procedure Randomize() staan. Daarmee creëer je een beginpunt ('seed') voor de Random() functie. In een programma roep je typisch 1x Randomize() aan en daarna een willekeurig aantal keer Random(), net zo vaak als je een random getal wilt hebben. Op veel oudere computers zie je dat als je Randomize() nog niet hebt aangeroepen, de reeks getallen die Random() genereert steeds dezelfde is. Met Randomize() zorg je dat de reeks telkens met een ander getal begint.
Als je op zoek gaat naar patronen in een pseudo-random reeks is het handig om te beginnen met een frequentietabel. Stel dat de functie Random() altijd getallen produceert tussen 0 en 99, bijvoorbeeld met de code
Delphi:
1
| MijnFunctieresultaat := Random(100); |
Nu kun je door deze functie heel vaak (minstens 1 miljoen keer) aan te roepen turven hoe vaak het functieresultaat de waarde 0, 1, 2...99 oplevert. Als alle getallen in de frequentietabel niet min of meer even vaak voorkomen, kun je daaruit concluderen dat de reeks niet stochastisch (Engels:
random) is. Als alle getallen daarentegen
wel ongeveer even vaak voorkomen, kun je daaruit
niet concluderen dat de reeks
wel stochastisch is - misschien zit er een patroon in dat alle getallen even vaak laat voorkomen.
Een al wat lastigere vorm van een controle of de reeks niet stochastisch is, is de controle of er een cijferreeks in voorkomt die zichzelf vaak herhaalt. Als dat het geval is, is de reeks duidelijk niet stochastisch. Als dat niet het geval is, is het echter nog steeds niet uitgesloten dat de reeks
niet stochastisch is. Er zijn immers nog meer patronen denkbaar dan een reeks zich herhalende getallen.
Meer algemeen gezegd is een reeks stochastisch als er geen patroon in aanwezig is. Maar hoe druk je dat in wetenschappelijke termen uit? Dat doe je door middel van de grootheid
entropie (Engels:
entropy). Hoe groter de entropie van de reeks getallen, des te groter de willekeurigheid daarin. Een reeks volstrekt stochastische getallen zal daardoor de maximale entropie bezitten die een reeks van die lengte kan hebben. Wil je een wetenschappelijk gefundeerde uitspraak doen over de stochasticiteit van een lange reeks getallen, dan zul je de entropie van die reeks moeten berekenen en op basis daarvan een conclusie trekken. Naarmate de entropie lager is, is de kans kleiner dat een reeks getallen stochastisch is. Natuurlijk zal het nooit mogelijk zijn om met 100% zekerheid te concluderen dat een reeks al dan niet stochastisch is, daarvoor heb je namelijk een oneindig lange reeks nodig. Om praktisch toch enkele conclusies te kunnen trekken zul je ergens een grens moeten trekken. Bereken daartoe de kans dat de gegeven reeks getallen niet stochastisch is; als die kans kleiner is dan 0,1% kun je met 99,9% waarschijnlijkheid stellen dat de reeks stochastisch is.
Nog een tip: natuurlijk is het verhaal over entropie niet bepaald eenvoudig. Bedenk echter wel dat een docent erg gevoelig zal zijn voor een poging in de goede richting. Zorg gewoon dat je een paar eenvoudige checks doet om te kijken of je een patroon in een reeks kunt ontdekken (frequentietabel berekenen, herhalende cijferreeksen herkennen). Zo ja, dan is de reeks niet stochastisch ('pseudo-random'). Zo nee, dan is de kan dat de reeks stochastisch is al een stuk kleiner, maar niet uitgesloten. Als je daarna nog een leuk stukje theorie over de betekenis van entropie voor stochastische reeksen schrijft en de software-implementatie achterwege laat - het is geen afstudeeropdracht

- kun je gegarandeerd rekenen op een goed cijfer

.
[
Voor 7% gewijzigd door
Tomatoman op 12-02-2005 19:09
]
Een goede grap mag vrienden kosten.