php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-06-2004, 10:44
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard Probleme mit gewichteter Verteilung

Moin.

Ich hab folgende Funktion:
PHP-Code:
srand ((double) microtime() * 1000000);

//Array anlegen: die Werte als Indizes, Gewichte als Werte.
$a = array (1=>4,2=>3,3=>3,4=>2,5=>2,6=>2);
//Dann holst du die Summe aller Gewichte mit
$x array_sum ($a);
//Zufallszahl ermitteln:
$r floor(rand (0,$x));
// und raussuchen, welcher Wert damit gemeint ist:
$s 0;
for (
reset($a); list($z$w) = each($a); )
{
  
$s+=$w;             // bisherige Summe ums aktuelle Gewicht erhoehen
  
if ($s>$r) break;   // Abbruch wenn Gewichtsumme>Zufallszahl
}
// und ausgeben
echo $z
Die hat Berni mal vor ewigen Zeiten mal hier in den Codeschnipseln gepostet.

Das ganze läuft ohne Problem, wenn alle Array-Elemente unterschiedliche Wichtungen haben.

Hab ich aber mehrere Elemente mit der gleichen Wichtung, wird immer nur das im Array als erstes vorkommende Element genommen.

Wie kann man das abändern, dass auch wenn mehrere Elemente die gleiche Wichtung haben eines daraus zufällig gewählt wird?

Danke schonmal im Voraus.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 02-06-2004, 11:21
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mhmm ... ich versteh nicht ganz, was du meinst.

PHP-Code:
<pre>
<?
function random()
{
    
srand ((double) microtime() * 1000000);
    
//Array anlegen: die Werte als Indizes, Gewichte als Werte.
    
$a = array (1=>8,2=>8,3=>3,4=>2,5=>2,6=>2);
    
//Dann holst du die Summe aller Gewichte mit
    
$x array_sum ($a);
    
//Zufallszahl ermitteln:
    
$r floor(rand (1,$x));
    
// und raussuchen, welcher Wert damit gemeint ist:
    
$s 0;
    for (
reset($a); list($z$w) = each($a); )
    {
        
$s+=$w;             // bisherige Summe ums aktuelle Gewicht erhoehen
        
if ($s>$r)
            break;   
// Abbruch wenn Gewichtsumme>Zufallszahl
    
}
    
// und ausgeben
    
return $z;
}
$k=0;
for(
$i=0$i<1000$i++)
{
    
$o1 random();
    if(!
is_null($o1))
    {
        
$out[$k] = $o1;
        
$k++;
    }
}
print_r(array_count_values($out));
?>
... habs zu testen mal in eine fkt gepackt. die ausgabe scheint mir wie erwartet:
Code:
Array
(
    [1] => 333
    [2] => 327
    [3] => 114
    [4] => 68
    [5] => 64
    [6] => 64
)
... zuwenig durchläufe?
__________________
Kissolino.com
Mit Zitat antworten
  #3 (permalink)  
Alt 02-06-2004, 13:10
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab zur Zeit keine Möglichkeit zu testen.

Code:
Array
(
    [1] => 333
    [2] => 327
    [3] => 114
    [4] => 68
    [5] => 64
    [6] => 64
)
Nochmal mein Problem.
Bei dem obigen Array, sind die Elemente 5 und 6 am wahrscheinlichsten.
Ich möchte immer nur ein Element auslesen.
Bei der Ursprungsversion würde aber immer nur Element 5 ausgwählt werden. Element 6 bekam ich nie als Ergebnis zurückgeliefert. Ich möchte aber, da die beiden Elemente die gleiche Wahrscheinlichtkeit besitzen, auch ungefähr gleich oft die beiden Elemente als Ergebnisse zurückgeliefert bekommen.

Was du jetzt mit deiner for-Schleife machen willst kapier ich da nicht so ganz.

Ich hoffe mein Problem ist jetzt etwas leichter zu verstehen.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #4 (permalink)  
Alt 02-06-2004, 13:20
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von XGremliN
Was du jetzt mit deiner for-Schleife machen willst kapier ich da nicht so ganz.
vielleicht hatte ich keinen bock, das script 1000x händisch aufzurufen und mir die ergebnisse zu merken?
Zitat:
Bei dem obigen Array, sind die Elemente 5 und 6 am wahrscheinlichsten.
nein, am unwahrscheinlichsten, weil 4,5 und 6 den niedrigsten wert haben
Zitat:
Ich möchte immer nur ein Element auslesen.
ohne schleife kommt ja auch nur einer zurück
Zitat:

Bei der Ursprungsversion würde aber immer nur Element 5 ausgwählt werden. Element 6 bekam ich nie als Ergebnis zurückgeliefert. Ich möchte aber, da die beiden Elemente die gleiche Wahrscheinlichtkeit besitzen, auch ungefähr gleich oft die beiden Elemente als Ergebnisse zurückgeliefert bekommen.
womit wir wieder bei der häufigkeit der aufrufe wären ... wer versteht jetzt wen nicht?
__________________
Kissolino.com
Mit Zitat antworten
  #5 (permalink)  
Alt 02-06-2004, 13:24
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Na gut. Ich werds heut abend mal testen.

Danke erstmal für deine Mühe.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #6 (permalink)  
Alt 03-06-2004, 11:02
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es funktioniert doch!

Ich hab nur den Array mit Werten gefüllt, die ich aus einer Datenbank geholt habe und habe da einen Fehler gemacht, deshalb tauchte der eine Wert garnicht erst im Array auf.
Deshalb habe ich auch nie dieses Element zurückbekommen.

Danke nochmals.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:26 Uhr.