[Prog] Broncode Reeks 5

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

User avatar
Nickman
Posts: 391
Contact:

[Prog] Broncode Reeks 5

Post#1 » Tue Nov 29, 2005 4:42 pm

Lotto.Mod

Code: Select all

MODULE Lotto;	
(*
Doel: Een lottotrekking simuleren
Auteur: Nick De Frangh
Datum: 29-11-05
Versie: 1.1
*)

	IMPORT
		OutExt, RandomNumbers, In, Oberon;
	TYPE
		FORMULIEREN = POINTER TO Formulier;
		Formulier = 
			RECORD
				getallen: SET;
				next: FORMULIEREN;
			END;

	VAR
		Form: FORMULIEREN;

	PROCEDURE Add*(aantal: LONGREAL);
	(* 
      Omschrijving : Een aantal lottoformulieren met 5 randomgetallen invullen
      Parameters : 
         aantal : Het aantal lottofomulieren er toegevoegd zullen worden
      Returntype : - 
      Algoritme : - 
   *)
		VAR
			CurrNode: FORMULIEREN;
			TempNode: FORMULIEREN;
			Test: BOOLEAN;
			i: INTEGER;
			getal: LONGINT;
			Trekking: Formulier;
					
	BEGIN
		IF aantal = 0 THEN HALT(60) END;
		NEW(Form);
		CurrNode := Form;
		
		FOR i := 0 TO 4 DO
			REPEAT
				Test := TRUE;
				getal := ENTIER(RandomNumbers.Uniform() * 32);
				IF (getal IN Trekking.getallen) THEN
					Test := FALSE;
				END;
			UNTIL Test;
			INCL(CurrNode^.getallen, getal);
		END;
		
		REPEAT
			NEW(TempNode);
			
			FOR i := 0 TO 4 DO
				REPEAT
					Test := TRUE;
					getal := ENTIER(RandomNumbers.Uniform() * 32);
					IF (getal IN Trekking.getallen) THEN
						Test := FALSE;
					END;
				UNTIL Test;
				INCL(TempNode^.getallen, getal)
			END;
			
			CurrNode^.next := TempNode;
			CurrNode := CurrNode^.next;
			aantal := aantal - 1;
		UNTIL (ENTIER(aantal) = 0);	
	END Add;

	PROCEDURE Simulate*;
	(* 
      Omschrijving : De ingevulde formulieren vergelijken met een rqndomtrekking van getallen
      Parameters : -
      Returntype : - 
      Algoritme : - 
   *)
		VAR
			Trekking: Formulier;
			i, n, j: INTEGER;
			getal: LONGINT;
			Test: BOOLEAN;
			aantal: ARRAY 6 OF LONGINT;
			TempNode: FORMULIEREN;
			
	BEGIN
		FOR i := 0 TO 4 DO
			REPEAT
				Test := TRUE;
				getal := ENTIER(RandomNumbers.Uniform() * 32);
				
				IF (getal IN Trekking.getallen) THEN
					Test := FALSE;
				END;
			UNTIL Test;
			
			INCL(Trekking.getallen, getal);
		END;
				
		OutExt.String("De winnende getallen zijn!");
		OutExt.Ln;
		j := 0;
		FOR i := 0 TO 31 DO
			IF i IN Trekking.getallen THEN
				OutExt.Int(i, 0);
				OutExt.String(" ");
				
				IF (i > j) THEN
					j := i;
				END;
			END;
		END;
		OutExt.Ln;
		OutExt.Ln;
		
		Test := FALSE;		
		TempNode := Form;
		
		REPEAT
			n := 0;
			FOR i := 0 TO j DO
				IF (i IN Trekking.getallen) & (i IN TempNode^.getallen) THEN
					INC(n);
				END;
			END;		

			TempNode := TempNode^.next;
			INC(aantal[n]);
		UNTIL TempNode = NIL;
		
		FOR i := 1 TO 5 DO
			OutExt.String("Er zijn ");
			OutExt.Int(aantal[i], 0);
			OutExt.String(" personen met ");
			OutExt.Int(i, 0);
			
			IF i = 1 THEN
				OutExt.String(" juist cijfer");
			ELSE
				OutExt.String(" juiste cijfers");
			END;
			OutExt.Ln;
		END;				
	END Simulate;
	
	PROCEDURE Run*;
	(* 
      Omschrijving : De trekking laten lopen
      Parameters : -
      Returntype : - 
      Algoritme : - 
   *)
		VAR
			Temp: LONGREAL;
			Time1, Time2: LONGINT;
			Time3: REAL;
	BEGIN
		Time1 := Oberon.Time();
		In.Open();
		In.LongReal(Temp);
		Add(Temp);
		Simulate();
		
		Time2 := Oberon.Time();
		Time3 := ((Time2 - Time1) / 1000);
		OutExt.Ln;
		OutExt.String("De simulatie heeft ");
		OutExt.Color(1);
		OutExt.RealFix(Time3, 0, 5);
		OutExt.Color(15);
		OutExt.String(" seconden geduurd.");
	END Run;
	
BEGIN
OutExt.Open();
OutExt.Clear;
END Lotto.
Lotto.Tool

Code: Select all

(*
	Auteur: Nick De Frangh
	Date: 29-11-05
*)

Builder.Compile \ws
	OutExt.Mod
	Lotto.Mod
	~
	
Builder.Compile \f*

System.Free
	Lotto.Mod
	OutExt.Mod
	~
	
Lotto.Run 10000000~ (kan effe duren, dus best getal verminder om gewoon te testen :D)
Voor degene die willen kunnen we is een PC speedtestje doen met 10.000.000 in te geven voor het aantal formulieren en je aantal seconden hier te posten :).

greetz ;)

-------------------------
Dit is mijn tijd voor 10.000.000 formulieren:


De winnende getallen zijn!
0 16 17 22 25

Er zijn 4261481 personen met 1 juiste cijfers
Er zijn 1309525 personen met 2 juiste cijfers
Er zijn 144961 personen met 3 juiste cijfers
Er zijn 5284 personen met 4 juiste cijfers
Er zijn 34 personen met 5 juiste cijfers

De simulatie heeft 439.31299 seconden geduurd.
Last edited by Nickman on Tue Nov 29, 2005 6:33 pm, edited 5 times in total.

User avatar
EagleEye812
Posts: 406

Post#2 » Tue Nov 29, 2005 4:47 pm

Nice job. Leuk timerke :D da zal ik er bij mij ook eens inzette ;)

Alleen denk ik dat "ze" liever hebben dat ge uw testprocedure in een andere module LottoTest.Mod zetten. Niet belangrijk voor deze reeksen natuurlijk maar wel als je iets van deze soort moet afgeven.

User avatar
Nickman
Posts: 391
Contact:

Post#3 » Tue Nov 29, 2005 5:07 pm

Ja, die test is eigenlijk gewoon het uitvoeren he, niet echt specifiek een test... :)
Maar je hebt wel gelijk ;)

User avatar
EagleEye812
Posts: 406

Post#4 » Tue Nov 29, 2005 5:16 pm

Idd, omdat bij u het toch allemaal random gegenereerd is maakt het weinig uit he ,

User avatar
EagleEye812
Posts: 406

Post#5 » Tue Nov 29, 2005 5:43 pm

magk effe vragen waar dit in godsnaam op slaat? :D

Code: Select all

IF i = 0 THEN
            OutExt.String(" juiste cijfer");
         ELSE
            OutExt.String(" juiste cijfers");
         END; 
doe dan 1 en juist cijfer
met 0 is het wel cijfers e (en why moet gij 0 juiste cijfers weergeve:p)

ik heb ni heel uw code doornomen maar moet het dan niet dit zijn:

Code: Select all

IF i = 1 THEN
            OutExt.String(" juist cijfer");
         ELSE
            OutExt.String(" juiste cijfers");
         END; 

User avatar
Nickman
Posts: 391
Contact:

Post#6 » Tue Nov 29, 2005 6:32 pm

Oeps, ja ik had daar een denkfoutje gemaakt door 0 niet mee te rekenen als mogelijheid van aantal juiste cijfers, en ik ben vergeten dat aan te passen :D
En ja, die juiste is ook dom :D

thx ;)

User avatar
EagleEye812
Posts: 406

Post#7 » Tue Nov 29, 2005 6:51 pm

denkstapje :D

User avatar
Norfolk
WOZ
Posts: 780
Contact:

Post#8 » Tue Nov 29, 2005 7:45 pm

bij mij heb ik die 5 minuten laten lopen en bleef maar gaan voor 10 miljoen :D uiteindelijk maar gestopt

User avatar
EagleEye812
Posts: 406

Post#9 » Wed Nov 30, 2005 5:05 pm

Mijn programma met 10.000.000 formulieren:

Code: Select all

Bezig met toevoegen random formulieren...

30  <= 11  <= 16  <= 21  <= 6  <= De winnende nummers zijn: 6 11 16 21 30 

 WHILE LOOP BEGINT 
683117 is een winnaar.
780203 is een winnaar.
972054 is een winnaar.
1036098 is een winnaar.
1191766 is een winnaar.
1259069 is een winnaar.
1373337 is een winnaar.
1379080 is een winnaar.
1494423 is een winnaar.
(...)
8585182 is een winnaar.
9708500 is een winnaar.
Er zijn 55 winnaars!
De simulatie heeft   21.46900 seconden geduurd.
Deze code checkt ENKEL op winnaars met 5 cijfers moet ik er wel bijzeggen ;) hehe

EDIT: Is da trouwens normaal dat ik altijd tussen de 50 en 60 winnaars heb op 10 miljoen?

User avatar
Norfolk
WOZ
Posts: 780
Contact:

Post#10 » Wed Nov 30, 2005 6:24 pm

maak nu een programma dat de verwachtingswaarde berekent :D zie wiskunde lol

User avatar
EagleEye812
Posts: 406

Post#11 » Thu Dec 01, 2005 10:58 am

Hmm, mijn code een beetje getweaked :D

Code: Select all

Bezig met toevoegen random formulieren...

31 -> 3 -> 19 -> 8 -> 26 -> De winnende nummers zijn: 3 8 19 26 31 

100294, 121410, 264469, 395218, 1106275, 1220543, 1234238, 2460480, 2560032, 2575547, 3041972, 3232923, 3615312, 3767520, 4322836, 4438650, 4579406, 4812030, 5167827, 5666250, 5819624, 5926703, 6297236, 6750222, 6771064, 6902650, 6984287, 7024824, 7876691, 7928521, 7976279, 8592551, 8795869, 9073321, 9118081, 9278917, 9675397, 9762420, 9846905, 9903923, zijn winnaars met 5 cijfers.

Er zijn 40 winnaars!
Er zijn 10000000 formulieren aangemaakt en vergeleken.
De simulatie heeft  8.00 seconden geduurd.
:P

User avatar
Nickman
Posts: 391
Contact:

Post#12 » Thu Dec 01, 2005 12:37 pm

Heb nog eens getest met Drik zijn code en met de neiuwste versie van oberon (2.5 te intaleren):

Code: Select all

Bezig met toevoegen random formulieren...

29 -> 31 -> 14 -> 31 -> 20 -> 15 -> De winnende nummers zijn: 14 15 20 29 31 

249992, 268743, 566500, 686047, 858634, zijn winnaars met 5 cijfers.

Er zijn 5 winnaars!
Er zijn 1000000 formulieren aangemaakt en vergeleken.
De simulatie heeft  1.03 seconden geduurd.

Bezig met toevoegen random formulieren...

31 -> 11 -> 12 -> 0 -> 21 -> De winnende nummers zijn: 0 11 12 21 31 

811491, 1135337, 1346122, 1741929, 1755499, 1784066, 2080486, 2188198, 2811999, 2848131, 2885313, 3301242, 3436102, 3552311, 3715332, 3792358, 3976126, 4056063, 4264560, 4763315, 4763974, 4819669, 4841424, 4903541, 5174553, 5973995, 6048762, 6115385, 6149555, 6314336, 6613770, 6972539, 7100952, 7239372, 7241433, 7358020, 7386653, 7555044, 7907525, 8012533, 8971109, 9115589, zijn winnaars met 5 cijfers.

Er zijn 42 winnaars!
Er zijn 10000000 formulieren aangemaakt en vergeleken.
De simulatie heeft  26.88 seconden geduurd.
Geeft wel effe een verschilleke :D tegenover bijna 500 seconden.
Het verschil da er nu nog is is gewoon AMD VS INTEL :D
(binnekort nog is teste met win xp x64 ;))
Webmaster of http://www.bwf.be
Make it idiot proof and someone will make a better idiot!

[quote="zarry"][url=http://www.winak.be/forum/viewtopic.php?p=12475#12475]wickaaaah! thcikci tschiki paaaauuuuw wicked-original![/url][/quote]

User avatar
EagleEye812
Posts: 406

Post#13 » Thu Dec 01, 2005 1:47 pm

Jup Intel is duidelijk beter daarin ze

Zelfde code, zelfde bewerkingen:
8,00 seconden op ne Pentium M Centrino 750 1.86 Ghz
27,08 seconden op AMD Athlon XP 3000+ (32bit)

zou toch ni zoveel moge schelen he :p

Pfrancing
Posts: 1

zie ook deze website...

Post#14 » Sun Nov 12, 2006 8:31 pm

Wat je kunt winnen bij de (Nederlandse en de Belgische) lotto kun je nu ook online zien.

Op de website www.lottotest.nl kun je 6 getallen aanklikken en gelijk duizend trekkingen (of een veelvoud daarvan) uitvoeren. Je ziet dan wat de hoogste prijs is die je hebt binnengesleept en wat je per ingelegde Euro hebt 'terugverdiend'.

Niet erg hoopgevend, wel erg leuk om te zien! :o

User avatar
Nickman
Posts: 391
Contact:

Post#15 » Sun Jan 07, 2007 2:23 pm

En het nut van deze reply is? :D
Webmaster of http://www.bwf.be
Make it idiot proof and someone will make a better idiot!

[quote="zarry"][url=http://www.winak.be/forum/viewtopic.php?p=12475#12475]wickaaaah! thcikci tschiki paaaauuuuw wicked-original![/url][/quote]

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 6 guests