wahrscheinlichkeit einer zahl erhöhen
-
- Gesperrt
- Beiträge: 234
- Registriert: 03.12.2006 14:48
- Kontaktdaten:
wahrscheinlichkeit einer zahl erhöhen
es gibt ja den zufallsbefehl in php (in nehme meistens einfach rand())
wenn ich durch zufall eine zahl zwischen 1 und 100 erscheinen lassen will ist also der code
<?php
$zahl = rand(1,100);
echo $zahl;
?>
wie muss ich denn den code verändern, wenn ich will, dass die chance, dass die zahl 27 bei dem rand befehl rauskommt verdoppelt wird?
wenn ich durch zufall eine zahl zwischen 1 und 100 erscheinen lassen will ist also der code
<?php
$zahl = rand(1,100);
echo $zahl;
?>
wie muss ich denn den code verändern, wenn ich will, dass die chance, dass die zahl 27 bei dem rand befehl rauskommt verdoppelt wird?
Code: Alles auswählen
<?php
$zahl = rand(0,100);
if ( $zahl == 0 )
{
$zahl = 27;
}
echo $zahl;
?>
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
- StarWolf3000
- Mitglied
- Beiträge: 1019
- Registriert: 25.07.2005 10:20
- Wohnort: Stolpen
- Kontaktdaten:
hab da noch was gefunden:
Quelle: http://nopaste.easy-coding.de/?id=147
Code: Alles auswählen
<?php
// function IncPosRand($min,$max,$zahl,$percent)
// $min ist die niedrigste Zahl des Zahlenbereichs
// $max " " " " höchste " " " " " "
// $zahl ist die Zahl, deren Wahrscheinlichkeit erhöht werden soll
// $percent gibt die Erhöhung der Wahrsch. in Prozent an
// -----------------------------
// Keine Garantie
function IncPosRand($min,$max,$zahl,$percent)
{
$num = Array();
for($a = 0; $a <= Round(($percent*$max)/100); $a++)
{
$num[] = $zahl;
}
for($b = $min; $b <= $max; $b++)
{
if($b != $zahl)
{
$num[] = $b;
}
}
shuffle($num);
$random = rand($min, count($num)-1);
return $num[$random];
}
?>
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
-
- Gesperrt
- Beiträge: 234
- Registriert: 03.12.2006 14:48
- Kontaktdaten:
warum ist das denn nicht mathematisch gesehen genau doppelt so viel?PhilippK hat geschrieben:Ist allerdings mathematisch gesehen nicht ganz genau doppelt so viel.Code: Alles auswählen
<?php $zahl = rand(0,100); if ( $zahl == 0 ) { $zahl = 27; } echo $zahl; ?>
Gruß, Philipp
- andreasOymann
- Ehemaliges Teammitglied
- Beiträge: 2392
- Registriert: 10.06.2003 16:29
- Wohnort: Hamminkeln
- Kontaktdaten:
bei rand(1,100) erscheint statistisch bei genau 100 Werten die Zahl 27 1x, bei dem Code von Philipp erscheint die 27 2x bei insgesamt 101 Werten...langeweile hat geschrieben:warum ist das denn nicht mathematisch gesehen genau doppelt so viel?PhilippK hat geschrieben:Ist allerdings mathematisch gesehen nicht ganz genau doppelt so viel.Code: Alles auswählen
<?php $zahl = rand(0,100); if ( $zahl == 0 ) { $zahl = 27; } echo $zahl; ?>
Gruß, Philipp

A.
Kein Support per PN / Mail / ICQ / MSN ! Dafür gibt´s dieses Forum...
-
- Gesperrt
- Beiträge: 234
- Registriert: 03.12.2006 14:48
- Kontaktdaten:
andreasOymann hat geschrieben:bei rand(1,100) erscheint statistisch bei genau 100 Werten die Zahl 27 1x, bei dem Code von Philipp erscheint die 27 2x bei insgesamt 101 Werten...langeweile hat geschrieben:warum ist das denn nicht mathematisch gesehen genau doppelt so viel?PhilippK hat geschrieben:Ist allerdings mathematisch gesehen nicht ganz genau doppelt so viel.Code: Alles auswählen
<?php $zahl = rand(0,100); if ( $zahl == 0 ) { $zahl = 27; } echo $zahl; ?>
Gruß, Philipp
A.
stimmt, aber das bisschen macht bei meinem script nichts aus
Code: Alles auswählen
<?php
$zahl = rand(1,100);
if ( $zahl != 27 ){$zahl = rand(1,100);}
echo $zahl;
?>

Nein, ist es auch nicht.Xwitz hat geschrieben:Das sollte korrekt sein.Code: Alles auswählen
<?php $zahl = rand(1,100); if ( $zahl != 27 ){$zahl = rand(1,100);} echo $zahl; ?>
Ziel ist es, dass die Wahrscheinlichkeit für n = 27 bei 0,02 (statt bei 0,01) liegt.
Bei meinem Vorschlag: (Perioden jeweils unterstrichen)
(n = 27): 2 * (1/101) = 0,0198
(n != 27): 1 * (1/101) = 0,0099
Bei deinem Vorschlag:
(n = 27): 1/100 + (99/100 * 1/100) = 0,0199
(n != 27): 1/100 = 0,01
Wirklich perfekt ist:
Code: Alles auswählen
<?php
$zahl = rand(1,100);
if ( $zahl <= 2 )
{
$zahl = 27;
}
else
{
$zahl = rand(1,99);
if ( $zahl >= 27 )
{
$zahl++;
}
}
echo $zahl;
?>
(n = 27): 2/100 = 0,02
(n != 27): 98/100 * 1/99 = 0,0098
Soi viel aus der Abteilung "Mathematik am späten Abend"...

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Du hast recht meine ist falsch.
Beispiel:
erste Ziehung (1 aus 2):
gezogen 1, Ergebnis 1 mit 50%
gezogen 2, kein Ergebnis -> zweite Ziehung auf die sich 50% verteilen
zweite Ziehung:
gezogen 1, Ergebnis 1 mit 25%
gezogen 2, Ergebnis zwei mit 25%
Endergebnis 1 mit 75%, Ergebnis 2 mit 25%
Editiert 28.12.06 15:00Uhr
PhilippKs zweite Lösung.
Beispiel:
1 aus 3 gesucht ist die 2:
erste Ziehung:
gezogen 1, Ergebnis 2 mit 33.3%
gezogen 2, Ergebnis 2 mit 33.3%
gezogen 3, kein Ergebnis -> zweite Ziehung auf die sich 33.3% verteilen
zweite Ziehung:
gezogen 1, Ergebnis 1 mit 16,6%
gezogen 2, Ergebnis 3 mit 16,6%
Endergebnis 2 mit 66,6%, Ergebnis 1 mit 16,6%,Ergebnis 3 mit 16,6%
Bei 1 aus 100 ist die Wahrscheinlichkeit für die 27 nicht doppelt so groß wie die für den Rest. 2% zu <1% (in 98% der Fälle wird 1 aus 99 gewählt)
Deine zweite Lösung ist also korrekt dafür, daß die 27 doppelt so häufig kommt wie vorher.
PhilippKs erste Lösung:
einzige Ziehung (1 aus 2 Werten bei 1 aus 3 Möglichkeiten in der Ziehung):
gezogen 0, Ergebnis 1 mit 33.3%
gezogen 1, Ergebnis 1 mit 33.3%
gezogen 2, Ergebnis 2 mit 33.3%
Endergebnis 1 mit 66.6%, Ergebnis 2 mit 33.3%
Deine erste Lösung ist korrekt für eine Wahrscheinlichkeit doppelt so hoch wie für die anderen Zahlen.
Was von Beidem die langeweile will, muß sie selber wissen.
/Edit
Beispiel:
erste Ziehung (1 aus 2):
gezogen 1, Ergebnis 1 mit 50%
gezogen 2, kein Ergebnis -> zweite Ziehung auf die sich 50% verteilen
zweite Ziehung:
gezogen 1, Ergebnis 1 mit 25%
gezogen 2, Ergebnis zwei mit 25%
Endergebnis 1 mit 75%, Ergebnis 2 mit 25%
Das ergibt eine Wahrscheinlichkeit größer 1 wenn noch 99 mit einer doppelten Wahrscheinlichkeit von 0,01 kommen sollen.PhilippK hat geschrieben:Ziel ist es, dass die Wahrscheinlichkeit für n = 27 bei 0,02 (statt bei 0,01) liegt.

Editiert 28.12.06 15:00Uhr
PhilippKs zweite Lösung.
Beispiel:
1 aus 3 gesucht ist die 2:
erste Ziehung:
gezogen 1, Ergebnis 2 mit 33.3%
gezogen 2, Ergebnis 2 mit 33.3%
gezogen 3, kein Ergebnis -> zweite Ziehung auf die sich 33.3% verteilen
zweite Ziehung:
gezogen 1, Ergebnis 1 mit 16,6%
gezogen 2, Ergebnis 3 mit 16,6%
Endergebnis 2 mit 66,6%, Ergebnis 1 mit 16,6%,Ergebnis 3 mit 16,6%
Bei 1 aus 100 ist die Wahrscheinlichkeit für die 27 nicht doppelt so groß wie die für den Rest. 2% zu <1% (in 98% der Fälle wird 1 aus 99 gewählt)
Deine zweite Lösung ist also korrekt dafür, daß die 27 doppelt so häufig kommt wie vorher.
PhilippKs erste Lösung:
einzige Ziehung (1 aus 2 Werten bei 1 aus 3 Möglichkeiten in der Ziehung):
gezogen 0, Ergebnis 1 mit 33.3%
gezogen 1, Ergebnis 1 mit 33.3%
gezogen 2, Ergebnis 2 mit 33.3%
Endergebnis 1 mit 66.6%, Ergebnis 2 mit 33.3%
Deine erste Lösung ist korrekt für eine Wahrscheinlichkeit doppelt so hoch wie für die anderen Zahlen.
Was von Beidem die langeweile will, muß sie selber wissen.
/Edit