anpera.net
https://anpera.homeip.net/phpbb3/

Das schwarze Schaf
https://anpera.homeip.net/phpbb3/viewtopic.php?f=43&t=4122
Seite 1 von 1

Autor:  -DoM [ Do 08 Nov, 2007 20:08 ]
Betreff des Beitrags:  Das schwarze Schaf

Ich möchte hier mal wieder ein kleines Special veröffentlichen.
Aber bevor nun wieder alle schreiben: "Alles nur geklaut!", stimme ich dem zu. Die grundlegende Idee und einige Texte stammen im Original von xItachix.

Mir hat das Special gefallen, nachdem mich mein Schatz darauf aufmerksam gemacht hat.

Leider war der ursprüngliche Code alles andere als "sauber", daher habe ich es komplett neu geschrieben und passend ein paar Bilder für die einzelnen Etappen angefertigt.

Einbauanleitung ist in der *.rar-Datei, entsprechend auch die Nutzungsbedingungen und Grafiken. Natürlich auch das Script.

Support gibt es keinen, brauch es auch nicht, da in der Anleitung, selbst für Dummies, alles erklärt ist.

Hier noch ein kleiner Screenshot:
Bild

Viel Spass damit....;-)

Dateianhänge:
Dateikommentar: v1.1 (08.11.2007)
motwd_bs_special.rar [62.75 KIB]
420-mal heruntergeladen

Autor:  Kevz [ Do 08 Nov, 2007 20:19 ]
Betreff des Beitrags: 

*lachweg - tränen Augen hab*
Hast wirklich schön Sauber gemacht! *thumbs up* - Die Bilder haben es mir auch sehr angetan. *schwer schmunzel* - Weiter so. x)

Autor:  -DoM [ Do 08 Nov, 2007 23:05 ]
Betreff des Beitrags: 

Ich musste ein kleines Update nachschieben (Aktualisiert im ersten Thread).

Im Betrieb zeigte sich leider mal wieder, wie zufällig die Zufallsfunktion (e_rand) doch ist....
Einige Spieler bekamen nur ein Schaf zu Gesicht, einige um die 5-6 Schafe, aber leider auch welche die weit mehr als 30 Schafe hatten.

Mittlerweile habe ich auch gesehen, das im Originalthread der Killerhäschen, Dragonslayer auch bereits einen Hinweis einbrachte.

Das Update beinhaltet nun zwei kleine Änderungen. Zum einen, werden die Schafe von Runde zu Runde stärker, und zum anderen eine Begrenzung auf eine Maximalzahl an Schafe, die beim eintreten in das Special festgelegt wird.
Dazu ein paar kleine Details, wie zum Beispiel, die Anzahl der Schafe die bereits geschaft sind.

Zum Updaten einfach den Inhalt des Archives hochladen, wie in der Einbauanleitung angegeben, oder einfach nur das Special ersetzen...

@Kevs:
Is gut gelle...*HRHR*

Autor:  Kevz [ Fr 09 Nov, 2007 07:31 ]
Betreff des Beitrags: 

Auf jeden fall. =) *kicher*
Aber freunde dich bitte mit der Funktion 'mt_rand' an, die ist wesentlich effektiver, als die 'e_rand' Funktion. =) - Nur als erwähnung am Rande. Dennoch sehr ansprechend das 'Special'. Die schaffe haben es mir sehr angetan. =D

Autor:  -DoM [ Fr 09 Nov, 2007 11:03 ]
Betreff des Beitrags: 

Meine e_rand():
[php]
function e_rand($min=false,$max=false){
if ($min===false) return mt_rand();
$min*=1000;
if ($max===false) return round(mt_rand($min)/1000,0);
$max*=1000;
if ($min==$max) return round($min/1000,0);
// if ($min==0 && $max==0) return 0; //do NOT as me why this line can be executed, it makes no sense, but it *does* get executed.
if ($min<$max){
return round(@mt_rand($min,$max)/1000,0);
}else if($min>$max){
return round(@mt_rand($max,$min)/1000,0);
}
}
[/php]
Wenn ich eine Schleife durchlaufen lasse um die Funktion zu testen, bekomme ich ein sehr ausgewogenes Ergebnis. Es ist halt wirklich nur so, dass es dennoch diese Extreme gibt. Naja ist ja jetzt umgangen, wenn auch nicht wirklich behoben.

P.S.: Es müsste auch die originale e_rand()-Funktion sein, zumindest aus der Anpera-Version.

Autor:  Nadeya [ Fr 09 Nov, 2007 13:29 ]
Betreff des Beitrags: 

Klasse, danke -Dom, gefällt mir gut.
Die armen, süßen Schäfchen. ;)

Autor:  Kevz [ Fr 09 Nov, 2007 14:53 ]
Betreff des Beitrags: 

Könnte gut sein - habe noch nicht genau nachgesehen. Aber gut, mh. Ansonsten würde ich Persönlich ehr mt_rand bevorzugen, ist halt effektiver. (anssichtssache) Es kommt immer auf die Nutzung dessen an.

Autor:  -DoM [ Fr 09 Nov, 2007 20:38 ]
Betreff des Beitrags: 

Es hat mir jetzt keine Ruhe gelassen und habe mit erstaunen festgestellt, dass es gravierende Unterschiede gibt.

Was mich aber ehrlich gesagt wundert, da ich einen ähnlichen Test bereits durchgeführt hatte und keine Unterschiede feststellen konnte, aber lassen wir erstmal das Ergebnis sprechen:

$this->bbcode_second_pass_code('', '
Funktion e_rand():
Option 1: 16575 / 16.6%
Option 2: 33411 / 33.4%
Option 3: 33254 / 33.3%
Option 4: 16760 / 16.8%
Laufzeit der Schleife mit 100000 Durchgängen: 0.431644

Funktion mt_rand():
Option 1: 25054 / 25.1%
Option 2: 25270 / 25.3%
Option 3: 24833 / 24.8%
Option 4: 24843 / 24.8%
Laufzeit der Schleife mit 100000 Durchgängen: 0.132521
')
Man sieht doch recht eklatante Unterschiede, sowohl in der Verteilung und in der Laufzeit. Letztere ist aber nicht wirklich Aussagekräftig, da unser Server gerade unter stark schwankender Last läuft.

Ich werde in Zukunft nur noch mt_rand verwenden *gelernt hab - rofl*

Autor:  Kevz [ Fr 09 Nov, 2007 21:28 ]
Betreff des Beitrags: 

*hrhr*
Soso. . . konnte ich doch mal 'erfolgreich' helfen. *lach* - Aber gut, dass ich dich doch noch von überzeugen konnte. *kicher - schmunzel*

Autor:  -DoM [ Sa 10 Nov, 2007 01:30 ]
Betreff des Beitrags: 

Es hat zwar eigentlich nur am Rande mit dem Special zu tun, aber dennoch lässt es mir noch immer keine Ruhe.

Ich habe nun mal ein wenig in den tiefen meines Roots geschaut und habe meinen ursprünglichen Test gefunden.
Diesen habe ich mal Versuchhalber laufen lassen, weil mir die e_rand()-Funktion doch ein wenig Spanisch vorkam.

Bei dieser Art des Einsatzes läuft es seltsamer Weise korrekt.

Hier der Schnipsel und das Ergebnis:
[php]
$gut1 = 0;
$gut2 = 0;
$gut3 = 0;
$gut4 = 0;
$bad1 = 0;
$bad2 = 0;
$bad3 = 0;
$bad4 = 0;
$bad5 = 0;
$bad6 = 0;
$bad7 = 0;
$bad8 = 0;
for ($i = 0; $i < 100000; $i ++){
$zufall = e_rand(1,1000);
switch (true){
case ($zufall >= 300 && $zufall <= 700):
switch (true){
case ($zufall >= 600):
$gut1 ++;
break;
case ($zufall >= 500):
$gut2 ++;
break;
case ($zufall >= 400):
$gut3 ++;
break;
case ($zufall >= 300):
$gut4 ++;
break;
}
break;
case ($zufall < 300 || $zufall > 700):
switch (true){
case ($zufall >= 925):
$bad1 ++;
break;
case ($zufall >= 850):
$bad2 ++;
break;
case ($zufall >= 775):
$bad3 ++;
break;
case ($zufall >= 701):
$bad4 ++;
break;
case ($zufall >= 225):
$bad5 ++;
break;
case ($zufall >= 150):
$bad6 ++;
break;
case ($zufall >= 75):
$bad7 ++;
break;
case ($zufall >= 1):
$bad8 ++;
break;
}
break;
}
}
[/php]
Ergebnis:
$this->bbcode_second_pass_code('', '
Der Test bei 100000 Durchläufen ergab:
Gut 1: 10164 / 10.2%
Gut 2: 10035 / 10%
Gut 3: 9994 / 10%
Gut 4: 9982 / 10%
Gesamt Gut: 40.2%

Schlecht 1: 7436 / 7.4%
Schlecht 2: 7607 / 7.6%
Schlecht 3: 7396 / 7.4%
Schlecht 4: 7435 / 7.4%
Schlecht 5: 7500 / 7.5%
Schlecht 6: 7564 / 7.6%
Schlecht 7: 7449 / 7.4%
Schlecht 8: 7438 / 7.4%
Gesamt Schlecht: 59.8%
')

Und hier der Schipsel vom dem Ergebnis, was 2 Posts höher zu finden ist:
[php]
$loops = 100000;
$option_1 = 0;
$option_2 = 0;
$option_3 = 0;
$option_4 = 0;
$time1 = microtime();
for ($i = 0; $i < $loops; $i ++){
switch (e_rand(1,8)){
case 1:
case 5:
$option_1 ++;
break;
case 2:
case 6:
$option_2 ++;
break;
case 3:
case 7:
$option_3 ++;
break;
case 4:
case 8:
$option_4 ++;
}
}
$time2 = microtime();

$option_1 = 0;
$option_2 = 0;
$option_3 = 0;
$option_4 = 0;
$time1 = microtime();
for ($i = 0; $i < $loops; $i ++){
switch (mt_rand(1,4)){
case 1:
$option_1 ++;
break;
case 2:
$option_2 ++;
break;
case 3:
$option_3 ++;
break;
case 4:
$option_4 ++;
}
}
$time2 = microtime();
[/php]

Bei der Nutzung von grossen Zahlen scheint es Prima zu funktionieren, wie obiges Beispiel zeigt. Also mit der originalen Verwendung mit e_rand().

Ich habe aber noch mal eine Schleife laufen lassen, mit verteilten cases (Fällen):
[php]
$loops = 100000;
$option_1 = 0;
$option_2 = 0;
$option_3 = 0;
$option_4 = 0;
$time1 = microtime();
for ($i = 0; $i < $loops; $i ++){
switch (e_rand(1,8)){
case 1:
case 5:
$option_1 ++;
break;
case 2:
case 6:
$option_2 ++;
break;
case 3:
case 7:
$option_3 ++;
break;
case 4:
case 8:
$option_4 ++;
}
}
$time2 = microtime();
[/php]
Ergibt:
$this->bbcode_second_pass_code('', '
Funktion e_rand():
Option 1: 21426 / 21.4%
Option 2: 28617 / 28.6%
Option 3: 28626 / 28.6%
Option 4: 21331 / 21.3%
Laufzeit der Schleife mit 100000 Durchgängen: 0.473265
')
Es wirkt dem ganzen Ausmass ein wenig gegen, wenn auch nicht komplett. Da ich diese Technik, mit den verteilten Fällen recht oft genutzt habe in meinen Scripts, habe das nochmal versucht. Um mein Gewissen ein wenig zu beruhigen...;-)

Naja definitiv zeigt es, dass wirklich der mt_rand()-Funktion, den Vorzug zu geben, als der e_rand()-Funktion.
Gerade wegen dem einfachen Anwendung in einem kleinen Switch-Konstrukt, welches ja die meisten, wie ich auch, bisher nutzen/nutzten.

Also hier mein Aufruf:
mt_rand() an die Macht, e_rand() in den (Keller-)Schacht!

*rofl*

Autor:  Kevz [ Sa 10 Nov, 2007 11:33 ]
Betreff des Beitrags: 

*höhö*
Netter Benchmark, ich denke, der wird einigen jetzt zu denken geben. Aber das es solche ausmaße hat, war mir selbst so stark nicht bewusst.

Aber gut, statt solch eine große Funktion zu nutzen, die wohl mehr beansprucht, kann man das gleiche mit 'mt_rand' kürzer u. kleiner machen. =)


In Reimen hälst dich gut. Versuch doch ein Ereignis in Reimen zu verfassen, dann fangen die Spieler an, dich zu hassen. *lach - schmunzel*

Autor:  anpera [ Sa 10 Nov, 2007 12:08 ]
Betreff des Beitrags: 

An dieser Stelle vielleicht ein kleiner Hinweis, wofür e_rand() eigentlich gedacht ist, bevor die Funktion mit Biertischparolen überall durch mt_rand() ersetzt wird. Denn DAS würde sich äußerst negativ auf das Spiel auswirken!!

mt_rand() erzeugt im angegebenen Bereich gleichmäßige Ergebnisse. Bei Kämpfen würde das bedeuten, dass alle Werte bei Angriffen, Verteidigungen, Monsterstärken etc. gleich häufig vorkommen würden. Schwache, mittlere und starke.

Gewünscht ist aber, dass die stärksten und die schwächsten Werte mit geringerer Wahrscheinlichkeit auftreten. Das leistet e_rand(). Ideal wäre dafür vielleicht eine Gauß'sche Verteilung - aber e_rand kommt dem gewünschten Effekt auch ohne große Rechnerei schon ausreichend nahe.
8)

Autor:  Kevz [ Sa 10 Nov, 2007 12:12 ]
Betreff des Beitrags: 

Also wäre es dennoch, in diesem Falle Sinnvoll, es bei gewissen Ereignissen o.ä. zu nutzen, was nicht bedingt mit einem Kampf zu tun hat. Oder nicht?

Autor:  -DoM [ Sa 10 Nov, 2007 17:04 ]
Betreff des Beitrags: 

anpera hat geschrieben:
[...]bevor die Funktion mit Biertischparolen [...]


Jetzt fühlen sich meine literarischen Fähigkeiten denunziert....
Dabei habe ich mir solche Mühe gegeben, und dass zu solch einer Uhrzeit.
*hrhr*

Autor:  Nightborn [ Sa 10 Nov, 2007 18:56 ]
Betreff des Beitrags:  ^^

:)

hier wäre was...gibts in 1.1.1

[php]$bell_curve=0;
function bell_rand($min=false,$max=false){
global $bell_curve;
if ($min===false && $max===false) {
//no value passed, assume 0 min, and 1 max.
$min=0;
$max=1;
}
if ($max===false){ // here got something mixed up in the previous versions
//only one value passed, assume it is the max.
$max = $min;
$min = 0;
}
if($min>$max){
//min is bigger than max, switch.
$x = $max;
$max = $min;
$min = $x;
}
if (($min-$max)==0){
//equal values, return one of them.
return $min;
}
if (!is_array($bell_curve)){
$bell_curve = array(
3 => -0.716599,
4 => -0.708501841,
5 => -0.688258942,
6 => -0.676113203,
7 => -0.659918884,
8 => -0.651821725,
9 => -0.639675985,
10 => -0.631578826,
11 => -0.627530246,
12 => -0.619433087,
13 => -0.611335927,
14 => -0.607287348,
15 => -0.599190188,
16 => -0.595141608,
17 => -0.591093029,
18 => -0.587044449,
19 => -0.582995869,
20 => -0.57894729,
21 => -0.57489871,
22 => -0.57085013,
23 => -0.56680155,
24 => -0.562752971,
25 => -0.558704391,
26 => -0.554655811,
28 => -0.550607232,
29 => -0.546558652,
31 => -0.542510072,
32 => -0.538461492,
34 => -0.534412913,
35 => -0.530364333,
37 => -0.526315753,
39 => -0.522267174,
41 => -0.518218594,
43 => -0.514170014,
45 => -0.510121434,
47 => -0.506072855,
50 => -0.502024275,
52 => -0.497975695,
54 => -0.493927115,
57 => -0.489878536,
60 => -0.485829956,
63 => -0.481781376,
66 => -0.477732797,
69 => -0.473684217,
72 => -0.469635637,
75 => -0.465587057,
79 => -0.461538478,
83 => -0.457489898,
86 => -0.453441318,
90 => -0.449392739,
95 => -0.445344159,
99 => -0.441295579,
104 => -0.437246999,
108 => -0.43319842,
113 => -0.42914984,
118 => -0.42510126,
124 => -0.421052681,
129 => -0.417004101,
135 => -0.412955521,
141 => -0.408906941,
147 => -0.404858362,
154 => -0.400809782,
161 => -0.396761202,
168 => -0.392712623,
175 => -0.388664043,
183 => -0.384615463,
191 => -0.380566883,
199 => -0.376518304,
207 => -0.372469724,
216 => -0.368421144,
226 => -0.364372565,
235 => -0.360323985,
245 => -0.356275405,
256 => -0.352226825,
266 => -0.348178246,
277 => -0.344129666,
289 => -0.340081086,
301 => -0.336032506,
313 => -0.331983927,
326 => -0.327935347,
340 => -0.323886767,
354 => -0.319838188,
368 => -0.315789608,
383 => -0.311741028,
399 => -0.307692448,
415 => -0.303643869,
431 => -0.299595289,
448 => -0.295546709,
466 => -0.29149813,
485 => -0.28744955,
504 => -0.28340097,
523 => -0.27935239,
544 => -0.275303811,
565 => -0.271255231,
587 => -0.267206651,
609 => -0.263158072,
633 => -0.259109492,
657 => -0.255060912,
682 => -0.251012332,
708 => -0.246963753,
734 => -0.242915173,
762 => -0.238866593,
790 => -0.234818014,
820 => -0.230769434,
850 => -0.226720854,
881 => -0.222672274,
914 => -0.218623695,
947 => -0.214575115,
982 => -0.210526535,
1017 => -0.206477955,
1054 => -0.202429376,
1091 => -0.198380796,
1130 => -0.194332216,
1171 => -0.190283637,
1212 => -0.186235057,
1255 => -0.182186477,
1298 => -0.178137897,
1344 => -0.174089318,
1390 => -0.170040738,
1438 => -0.165992158,
1488 => -0.161943579,
1539 => -0.157894999,
1591 => -0.153846419,
1645 => -0.149797839,
1700 => -0.14574926,
1757 => -0.14170068,
1816 => -0.1376521,
1876 => -0.133603521,
1938 => -0.129554941,
2002 => -0.125506361,
2068 => -0.121457781,
2135 => -0.117409202,
2204 => -0.113360622,
2275 => -0.109312042,
2348 => -0.105263463,
2423 => -0.101214883,
2500 => -0.097166303,
2579 => -0.093117723,
2660 => -0.089069144,
2743 => -0.085020564,
2828 => -0.080971984,
2916 => -0.076923405,
3005 => -0.072874825,
3097 => -0.068826245,
3192 => -0.064777665,
3288 => -0.060729086,
3387 => -0.056680506,
3489 => -0.052631926,
3593 => -0.048583346,
3700 => -0.044534767,
3809 => -0.040486187,
3920 => -0.036437607,
4035 => -0.032389028,
4152 => -0.028340448,
4272 => -0.024291868,
4394 => -0.020243288,
4520 => -0.016194709,
4648 => -0.012146129,
4779 => -0.008097549,
4913 => -0.00404897,
5050 => 0, // 5th percentile
5190 => 0.00404819,
5334 => 0.00809677,
5480 => 0.012145349,
5629 => 0.016193929,
5782 => 0.020242509,
5938 => 0.024291088,
6097 => 0.028339668,
6260 => 0.032388248,
6426 => 0.036436828,
6595 => 0.040485407,
6768 => 0.044533987,
6944 => 0.048582567,
7123 => 0.052631146,
7307 => 0.056679726,
7493 => 0.060728306,
7684 => 0.064776886,
7878 => 0.068825465,
8076 => 0.072874045,
8277 => 0.076922625,
8482 => 0.080971205,
8692 => 0.085019784,
8904 => 0.089068364,
9121 => 0.093116944,
9342 => 0.097165523,
9566 => 0.101214103,
9795 => 0.105262683,
10027 => 0.109311263,
10264 => 0.113359842,
10504 => 0.117408422,
10749 => 0.121457002,
10997 => 0.125505581,
11250 => 0.129554161,
11507 => 0.133602741,
11768 => 0.137651321,
12033 => 0.1416999,
12302 => 0.14574848,
12576 => 0.14979706,
12854 => 0.153845639,
13136 => 0.157894219,
13422 => 0.161942799,
13712 => 0.165991379,
14007 => 0.170039958,
14306 => 0.174088538,
14609 => 0.178137118,
14917 => 0.182185697,
15229 => 0.186234277,
15545 => 0.190282857,
15866 => 0.194331437,
16190 => 0.198380016,
16519 => 0.202428596,
16853 => 0.206477176,
17190 => 0.210525755,
17532 => 0.214574335,
17879 => 0.218622915,
18229 => 0.222671495,
18584 => 0.226720074,
18943 => 0.230768654,
19306 => 0.234817234,
19674 => 0.238865814,
20045 => 0.242914393,
20421 => 0.246962973,
20801 => 0.251011553,
21186 => 0.255060132,
21574 => 0.259108712,
21966 => 0.263157292,
22363 => 0.267205872,
22763 => 0.271254451,
23168 => 0.275303031,
23576 => 0.279351611,
23989 => 0.28340019,
24405 => 0.28744877,
24825 => 0.29149735,
25249 => 0.29554593,
25677 => 0.299594509,
26109 => 0.303643089,
26544 => 0.307691669,
26983 => 0.311740248,
27425 => 0.315788828,
27871 => 0.319837408,
28321 => 0.323885988,
28774 => 0.327934567,
29230 => 0.331983147,
29690 => 0.336031727,
30153 => 0.340080306,
30619 => 0.344128886,
31089 => 0.348177466,
31561 => 0.352226046,
32037 => 0.356274625,
32515 => 0.360323205,
32997 => 0.364371785,
33481 => 0.368420365,
33968 => 0.372468944,
34458 => 0.376517524,
34950 => 0.380566104,
35445 => 0.384614683,
35942 => 0.388663263,
36442 => 0.392711843,
36944 => 0.396760423,
37448 => 0.400809002,
37955 => 0.404857582,
38463 => 0.408906162,
38974 => 0.412954741,
39486 => 0.417003321,
40001 => 0.421051901,
40517 => 0.425100481,
41034 => 0.42914906,
41553 => 0.43319764,
42074 => 0.43724622,
42596 => 0.441294799,
43119 => 0.445343379,
43644 => 0.449391959,
44170 => 0.453440539,
44696 => 0.457489118,
45224 => 0.461537698,
45753 => 0.465586278,
46282 => 0.469634857,
46812 => 0.473683437,
47342 => 0.477732017,
47873 => 0.481780597,
48405 => 0.485829176,
48936 => 0.489877756,
49468 => 0.493926336,
50000 => 0.497974916,
50532 => 0.502023495,
51064 => 0.506072075,
51595 => 0.510120655,
52127 => 0.514169234,
52658 => 0.518217814,
53188 => 0.522266394,
53718 => 0.526314974,
54247 => 0.530363553,
54776 => 0.534412133,
55304 => 0.538460713,
55830 => 0.542509292,
56356 => 0.546557872,
56881 => 0.550606452,
57404 => 0.554655032,
57926 => 0.558703611,
58447 => 0.562752191,
58966 => 0.566800771,
59483 => 0.57084935,
59999 => 0.57489793,
60514 => 0.57894651,
61026 => 0.58299509,
61537 => 0.587043669,
62045 => 0.591092249,
62552 => 0.595140829,
63056 => 0.599189408,
63558 => 0.603237988,
64058 => 0.607286568,
64555 => 0.611335148,
65050 => 0.615383727,
65542 => 0.619432307,
66032 => 0.623480887,
66519 => 0.627529466,
67003 => 0.631578046,
67485 => 0.635626626,
67963 => 0.639675206,
68439 => 0.643723785,
68911 => 0.647772365,
69381 => 0.651820945,
69847 => 0.655869525,
70310 => 0.659918104,
70770 => 0.663966684,
71226 => 0.668015264,
71679 => 0.672063843,
72129 => 0.676112423,
72575 => 0.680161003,
73017 => 0.684209583,
73456 => 0.688258162,
73891 => 0.692306742,
74323 => 0.696355322,
74751 => 0.700403901,
75175 => 0.704452481,
75595 => 0.708501061,
76011 => 0.712549641,
76424 => 0.71659822,
76832 => 0.7206468,
77237 => 0.72469538,
77637 => 0.728743959,
78034 => 0.732792539,
78426 => 0.736841119,
78814 => 0.740889699,
79199 => 0.744938278,
79579 => 0.748986858,
79955 => 0.753035438,
80326 => 0.757084017,
80694 => 0.761132597,
81057 => 0.765181177,
81416 => 0.769229757,
81771 => 0.773278336,
82121 => 0.777326916,
82468 => 0.781375496,
82810 => 0.785424076,
83147 => 0.789472655,
83481 => 0.793521235,
83810 => 0.797569815,
84134 => 0.801618394,
84455 => 0.805666974,
84771 => 0.809715554,
85083 => 0.813764134,
85391 => 0.817812713,
85694 => 0.821861293,
85993 => 0.825909873,
86288 => 0.829958452,
86578 => 0.834007032,
86864 => 0.838055612,
87146 => 0.842104192,
87424 => 0.846152771,
87698 => 0.850201351,
87967 => 0.854249931,
88232 => 0.85829851,
88493 => 0.86234709,
88750 => 0.86639567,
89003 => 0.87044425,
89251 => 0.874492829,
89496 => 0.878541409,
89736 => 0.882589989,
89973 => 0.886638568,
90205 => 0.890687148,
90434 => 0.894735728,
90658 => 0.898784308,
90879 => 0.902832887,
91096 => 0.906881467,
91308 => 0.910930047,
91518 => 0.914978626,
91723 => 0.919027206,
91924 => 0.923075786,
92122 => 0.927124366,
92316 => 0.931172945,
92507 => 0.935221525,
92693 => 0.939270105,
92877 => 0.943318685,
93056 => 0.947367264,
93232 => 0.951415844,
93405 => 0.955464424,
93574 => 0.959513003,
93740 => 0.963561583,
93903 => 0.967610163,
94062 => 0.971658743,
94218 => 0.975707322,
94371 => 0.979755902,
94520 => 0.983804482,
94666 => 0.987853061,
94810 => 0.991901641,
94950 => 0.995950221,
95087 => 1, // 95th Percentile
95221 => 1.00404738,
95352 => 1.00809596,
95480 => 1.01214454,
95606 => 1.016193119,
95728 => 1.020241699,
95848 => 1.024290279,
95965 => 1.028338859,
96080 => 1.032387438,
96191 => 1.036436018,
96300 => 1.040484598,
96407 => 1.044533177,
96511 => 1.048581757,
96613 => 1.052630337,
96712 => 1.056678917,
96808 => 1.060727496,
96903 => 1.064776076,
96995 => 1.068824656,
97084 => 1.072873236,
97172 => 1.076921815,
97257 => 1.080970395,
97340 => 1.085018975,
97421 => 1.089067554,
97500 => 1.093116134,
97577 => 1.097164714,
97652 => 1.101213294,
97725 => 1.105261873,
97796 => 1.109310453,
97865 => 1.113359033,
97932 => 1.117407612,
97998 => 1.121456192,
98062 => 1.125504772,
98124 => 1.129553352,
98184 => 1.133601931,
98243 => 1.137650511,
98300 => 1.141699091,
98355 => 1.14574767,
98409 => 1.14979625,
98461 => 1.15384483,
98512 => 1.15789341,
98562 => 1.161941989,
98610 => 1.165990569,
98656 => 1.170039149,
98702 => 1.174087728,
98745 => 1.178136308,
98788 => 1.182184888,
98829 => 1.186233468,
98870 => 1.190282047,
98909 => 1.194330627,
98946 => 1.198379207,
98983 => 1.202427786,
99018 => 1.206476366,
99053 => 1.210524946,
99086 => 1.214573526,
99119 => 1.218622105,
99150 => 1.222670685,
99180 => 1.226719265,
99210 => 1.230767845,
99238 => 1.234816424,
99266 => 1.238865004,
99292 => 1.242913584,
99318 => 1.246962163,
99343 => 1.251010743,
99367 => 1.255059323,
99391 => 1.259107903,
99413 => 1.263156482,
99435 => 1.267205062,
99456 => 1.271253642,
99477 => 1.275302221,
99496 => 1.279350801,
99515 => 1.283399381,
99534 => 1.287447961,
99552 => 1.29149654,
99569 => 1.29554512,
99585 => 1.2995937,
99601 => 1.303642279,
99617 => 1.307690859,
99632 => 1.311739439,
99646 => 1.315788019,
99660 => 1.319836598,
99674 => 1.323885178,
99687 => 1.327933758,
99699 => 1.331982337,
99711 => 1.336030917,
99723 => 1.340079497,
99734 => 1.344128077,
99744 => 1.348176656,
99755 => 1.352225236,
99765 => 1.356273816,
99774 => 1.360322396,
99784 => 1.364370975,
99793 => 1.368419555,
99801 => 1.372468135,
99809 => 1.376516714,
99817 => 1.380565294,
99825 => 1.384613874,
99832 => 1.388662454,
99839 => 1.392711033,
99846 => 1.396759613,
99853 => 1.400808193,
99859 => 1.404856772,
99865 => 1.408905352,
99871 => 1.412953932,
99876 => 1.417002512,
99882 => 1.421051091,
99887 => 1.425099671,
99892 => 1.429148251,
99896 => 1.43319683,
99901 => 1.43724541,
99905 => 1.44129399,
99910 => 1.44534257,
99914 => 1.449391149,
99917 => 1.453439729,
99921 => 1.457488309,
99925 => 1.461536888,
99928 => 1.465585468,
99931 => 1.469634048,
99934 => 1.473682628,
99937 => 1.477731207,
99940 => 1.481779787,
99943 => 1.485828367,
99946 => 1.489876946,
99948 => 1.493925526,
99950 => 1.497974106,
99953 => 1.502022686,
99955 => 1.506071265,
99957 => 1.510119845,
99959 => 1.514168425,
99961 => 1.518217005,
99963 => 1.522265584,
99965 => 1.526314164,
99966 => 1.530362744,
99968 => 1.534411323,
99969 => 1.538459903,
99971 => 1.542508483,
99972 => 1.546557063,
99974 => 1.550605642,
99975 => 1.554654222,
99976 => 1.558702802,
99977 => 1.562751381,
99978 => 1.566799961,
99979 => 1.570848541,
99980 => 1.574897121,
99981 => 1.5789457,
99982 => 1.58299428,
99983 => 1.58704286,
99984 => 1.591091439,
99985 => 1.595140019,
99986 => 1.603237179,
99987 => 1.607285758,
99988 => 1.615382918,
99989 => 1.623480077,
99990 => 1.627528657,
99991 => 1.635625816,
99992 => 1.647771556,
99993 => 1.655868715,
99994 => 1.672063034,
99995 => 1.684208773,
99996 => 1.704451672,
99997 => 1.712548831
);
}
$r = mt_rand(0,100000);
//echo $r." = ";
reset($bell_curve);
while (list($key,$val)=each($bell_curve)){
if ($key>=$r) {
return $min + $val * ($max-$min);
}
}
//We're above 0.99997
return $min + $val * ($max-$min);

//below optomizations don't work atm.
echo $r." = ";
$index="0.00000";
for ($n = 0; $n<strlen($r); $n++){
$f = substr($r,0,$n);
if (isset($bell_curve[(float)$f])) $index = $f;
}
if (strlen($index)>=7){
return $min + $bell_curve[(float)$f] * ($max-$min);
}
$o = strlen($f)-2;
$o = pow(10,$o); // $o is orders of magnitude of our current closest index match
for ($n = 0; $n<10000; $n++){
$x = $n / $o;
if (isset($bell_curve[(float)($f+$x)])) return $min + $bell_curve[(float)($f+$x)] * ($max-$min);
if (isset($bell_curve[(float)($f-$x)])) return $min + $bell_curve[(float)($f-$x)] * ($max-$min);
}
echo "\n<br>Unable to locate random value, \$r was $r<br>\n";
}[/php]

ja, endlich mal gespammt ^^

Autor:  Auric [ Fr 21 Dez, 2007 19:21 ]
Betreff des Beitrags: 

Wenn man es ein bisschen einfacher strikt kann man auch einen Simulierten Bernoulli-Versuch ablaufen lassen, die sind ja bekanntermaßen glockenförmig verteilt:
[php]
function gauss_rand($max,$min=0){
$res = $min;
for ($i=0;$i<$max;$i++) $res += mt_rand(0,1);
return $res;
}
[/php]

Nachteil wäre der häufige Aufruf einer bereits integrierten rand-Funktion. Aber mit bestechend kompaktem Code ^^

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/