Anzahl der Platzbelegungen
Sp \ Platz 1 2 3 4 5 6 7 8 9 10
-------------------------------------------------------------------------------
1 1000 12 78 409 1941 7086 21840 57129 127726 257806 525973
2 1050 68 378 1747 6408 19784 51180 112424 208431 324442 275138
3 1100 306 1549 6050 18345 48492 106510 192558 276617 223254 126319
4 1150 1352 5984 18483 47898 104515 188969 262929 201958 118302 49610
5 1200 5436 18869 48865 105155 188878 260171 193917 111006 50962 16741
6 1250 17971 50842 108191 191797 260222 191712 107345 48937 18142 4841
7 1300 51256 116533 199463 263737 191407 105522 47835 17773 5354 1120
8 1350 126152 221327 278177 194780 106429 48062 17990 5545 1321 217
9 1400 273340 326937 209404 112305 50900 19106 6009 1610 355 34
10 1450 524107 257503 129211 57634 22287 6928 1864 397 62 7
Schaetzung der Wahrscheinlichkeiten in %
Sp \ Platz 1 2 3 4 5 6 7 8 9 10
-------------------------------------------------------------------------------
1 1000 0 0,01 0,04 0,19 0,71 2,18 5,71 12,77 25,78 52,6
2 1050 0,01 0,04 0,17 0,64 1,98 5,12 11,24 20,84 32,44 27,51
3 1100 0,03 0,15 0,6 1,83 4,85 10,65 19,26 27,66 22,33 12,63
4 1150 0,14 0,6 1,85 4,79 10,45 18,9 26,29 20,2 11,83 4,96
5 1200 0,54 1,89 4,89 10,52 18,89 26,02 19,39 11,1 5,1 1,67
6 1250 1,8 5,08 10,82 19,18 26,02 19,17 10,73 4,89 1,81 0,48
7 1300 5,13 11,65 19,95 26,37 19,14 10,55 4,78 1,78 0,54 0,11
8 1350 12,62 22,13 27,82 19,48 10,64 4,81 1,8 0,55 0,13 0,02
9 1400 27,33 32,69 20,94 11,23 5,09 1,91 0,6 0,16 0,04 0
10 1450 52,41 25,75 12,92 5,76 2,23 0,69 0,19 0,04 0,01 0
Anzahl Durchlaeufe: 1000000
' #########################################################################
' # Platzwahrscheinlichkeit.vbs #
' # Simulation zur Abschaetzung der Wahrscheinlichkeiten fuer das #
' # Belegen einzelner Plätze in anz-rundigen jeder-gegen-jeden-Turnieren #
' #########################################################################
' #### Simulationsparameter
' #########################################################################
' # Anzahl Teilnehmer und Runden
anz=10
' # Anzahl Simulationsdurchlaeufe
durchlaeufe=3000
' # Remisbreite bei gleichstarken Spielern
maxremis=0.6
' # regelmaessiger ELO-Abstand der Spieler
elodiff=50
' #########################################################################
' # Fortschrittsanzeige-Intervall
anzeigeintervall=100
dim staerke(1000)
dim erg(1000,1000)
dim punkte(1000)
dim SB(1000)
dim platz(1000)
dim anzplatz(1000,1000)
dim anzdl
set FSO=createObject ( "Scripting.FileSystemObject")
set aus=FSO.openTextfile("Platzwahrscheinlichkeit.txt",2,true)
init
for a=1 to durchlaeufe
if a mod anzeigeintervall= 0 then
wscript.stdout.write a & chr(13)
end if
do_turnier
sort
update
' show_turnier
' wscript.echo
next
show_anzahl
show_wahrsch
aus.close
wscript.echo "fertig"
function init
randomize
for i=1 to anz
staerke(i)=1000+(i-1)*elodiff
for j=1 to anz
anzplatz(i,j)=0
next
next
anzdl=0
end function
function do_turnier
for i=1 to anz-1
for j=i+1 to anz
partie i,j
next
next
end function
function update
for i=1 to anz
anzplatz(i,platz(i))=anzplatz(i,platz(i))+1
next
anzdl=anzdl+1
end function
function sort
' ##### Punkte bestimmen
for i=1 to anz
punkte(i)=0
for j=1 to anz
punkte(i)=punkte(i)+erg(i,j)
next
next
' ##### Sonneborn-Berger bestimmen
for i=1 to anz
SB(i)=0
for j=1 to anz
if erg(i,j)=2 then
SB(i)=SB(i)+punkte(j)
end if
if erg(i,j)=1 then
SB(i)=SB(i)+punkte(j)/2
end if
next
next
' ##### Platz bestimmen
for i=1 to anz
g=0
for j=1 to anz
if besser(i,j) then
g=g+1
end if
next
platz(i)=anz-g
next
end function
function besser(i,j)
if punkte(i)>punkte(j) then
besser=true
elseif punkte(i)=punkte(j) then
if SB(i)>SB(j) then
besser=true
elseif SB(i)=SB(j) and i>j then
besser=true
else
besser=false
end if
else
besser=false
end if
end function
function show_turnier
for i=1 to anz
s= formr(i,2) & formr(staerke(i),5)
for j=1 to anz
s = s & formr(erg(i,j),2)
next
s = s & formr(punkte(i),5) & formr(platz(i),3) & formr(SB(i),5)
wscript.echo s
next
end function
function show_anzahl
aus.writeline "Anzahl der Platzbelegungen"
s="Sp\Platz"
for j=1 to anz
s = s & formr(j,7)
next
aus.writeline s
aus.writeline string(9+anz*7,"-")
for i=1 to anz
s= formr(i,3) & formr(staerke(i),5)
for j=1 to anz
s = s & formr(anzplatz(i,j),7)
next
aus.writeline s
next
aus.writeline "Anzahl Durchlaeufe: " & anzdl
aus.writeline
end function
function show_wahrsch
aus.writeline "Schaetzung der Wahrscheinlichkeiten in %"
s="Sp\Platz"
for j=1 to anz
s = s & formr(j,7)
next
aus.writeline s
aus.writeline string(9+anz*7,"-")
for i=1 to anz
s= formr(i,3) & formr(staerke(i),5)
for j=1 to anz
s = s & formr(round(anzplatz(i,j)/anzdl*100,2),7)
next
aus.writeline s
next
aus.writeline "Anzahl Durchlaeufe: " & anzdl
aus.writeline
end function
function formr(s,n)
formr=right(space(22)&s,n)
end function
function partie(i,j)
erf=1/(1+10^((staerke(i)-staerke(j))/400))
if erf <=0.5 then
arembrh=erf*maxremis
else
arembrh=(1-erf)*maxremis
end if
p1=erf-arembrh
p2=erf+arembrh
r=rnd
if r>p2 then
erg(i,j)=2
erg(j,i)=0
elseif r<=p1 then
erg(i,j)=0
erg(j,i)=2
else
erg(i,j)=1
erg(j,i)=1
end if
end function
@echo off
echo %date% %time%
cscript /nologo Platzwahrscheinlicheit.vbs
echo %date% %time%
notepad Platzwahrscheinlichkeit.txt
pause
Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill