#0: options(width=75);options(digits=3);zz.start<-20 anz.spiele<-10;anz.kugeln<-49;anz.gewaehlt<-6;schon.gewartet<-5 lotto.experiment<- function(anz.spiele=1,anz.kugeln=49,anz.gewaehlt=6,zz.start=13){ anz.spiele<-min(100,anz.spiele) result<-NULL;set.seed(zz.start) for(i in 1:anz.spiele){ result<-cbind(result,sort(sample(1:anz.kugeln,size=anz.gewaehlt))) } dimnames(result)<-list(NULL,paste(1:anz.spiele,":",sep="")) result } warte.experiment<- function(anz.ziehungen=100,anz.kugeln=49,anz.gewaehlt=6,zz.start=13){ set.seed(zz.start) prob<-1-prod((anz.kugeln-(1:anz.gewaehlt))/(1+anz.kugeln-(1:anz.gewaehlt))) result<-rbinom(anz.ziehungen,size=1,prob=prob) result<-diff(c(0,(1:anz.ziehungen)[result==1]))-1 result } #:0 #1: print("Lottoziehungsexperiment") result<-lotto.experiment(anz.spiele, anz.kugeln, anz.gewaehlt, zz.start) print(paste("Anzeige der ersten",anz.spiele,"Ziehungen")) print(result) #:1 #2: print("Wartezeiten auf die 7 ermitteln") print("Wie viele Ziehungen sollen realisiert werden? (Anzahl<10000)") anz.ziehungen<-min(10000,scan(n=1)) result<-warte.experiment(anz.ziehungen,anz.kugeln,anz.gewaehlt,zz.start) print("Fehlversuche bis zum Auftreten der 7") print(result) #:2 #3: print("Mittlere Wartezeit auf die 7") print(mean(result)) #:3 #4: print("Plot laufende Nummer/Wartezeiten") plot(result,ylab="Fehlversuche",xlab="Nummer") abline(h=mean(result)) #:4 #5: print(paste("Mittlere zusaetzliche Wartezeit jenseits",schon.gewartet)) print(mean(result[result>=schon.gewartet]-schon.gewartet)) #:5 #6: print("theoretische mittlere Wartezeit") #10: prob<-1-prod((anz.kugeln-(1:anz.gewaehlt))/(1+anz.kugeln-(1:anz.gewaehlt))) #:10 print((1-prob)/prob) #:6 #7: print("Neusetzung einiger Parameter"); print("============================") print(paste("Bisher wurden",anz.kugeln,"verwendet.")) print("Aus wievielen Kugeln soll gezogen werden?") anz.kugeln<-c(scan(n=1),anz.kugeln)[1] print(paste("Bisher wurden",anz.gewaehlt,"gezogen.")) print("Wie viele Kugeln sollen gezogen werden? (Nicht mehr als moeglich!)") anz.gewaehlt<-min(c(scan(n=1),anz.gewaehlt)[1],anz.kugeln) print(paste("Im Lotto-Experiment wurden",anz.spiele,"Spiele gespielt.")) print("Wie viele Spiele soll durchgefuehrt werden?") anz.spiele<-c(scan(n=1),anz.spiele)[1] print(paste("Als Fehlversuchsanzahl war",schon.gewartet,"gesetzt.")) print("Wie soll der neue Wert sein?") print("Dieser Wert sollte nicht zu gross gewaehlt werden!") schon.gewartet<-c(scan(n=1),schon.gewartet)[1] print("Um nicht immer dieselben Ergebnisse zu bekommen, kann noch die") print("Ausgangssituations fuer den Zufall gesetzt werden.") print("Hierzu kann nun eine ganze Zahl zwischen 1 und 999 eingegeben werden.") print(paste("Zuletzt war diese Zahl",zz.start)) zz.start<-c(scan(n=1),zz.start)[1] #:7