Zurück   klamm-Forum > klamm-Lose > Lose4Scripts > Lose4Scripts (erledigt)

 
 
LinkBack Themen-Optionen Ansicht
Alt 01.10.2006, 11:25:48   #16 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.530
Standard

Zitat:
Zitat von hatty Beitrag anzeigen
$zahl = $zahl % 2 == 0 ? 0 : 1;
Was soll das sein?
Wenns ein Ternärer Operator sein soll, dann fehlen da die Klammer:
$zahl = ($zahl % 2 == 0) ? 0 : 1;
flaschenkind ist offline  
Alt 01.10.2006, 12:15:44   #17 (permalink)
Erfahrener Benutzer

ID: 41926
Lose-Remote

Reg: 24.04.2006
Beiträge: 832
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Was soll das sein?
Wenns ein Ternärer Operator sein soll, dann fehlen da die Klammer:
$zahl = ($zahl % 2 == 0) ? 0 : 1;
es ist ein Ternärer Operator und man muss es nicht in Klammern setzen:

$zahl % 2 == 0

hier siehst du ein beispiel:
$wahl = $_POST["wahl"] == 1 ? 1 : 0;
$comp = mt_rand(1,1000000);
$comp = $comp % 2 == 0 ? 0 : 1;

auch hier wurde keine Klammer benutzt.

Gruss hatty

Geändert von hatty (01.10.2006 um 12:26:31 Uhr)
hatty ist offline  
Alt 01.10.2006, 13:36:15   #18 (permalink)
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose-Remote

Reg: 20.04.2006
Beiträge: 2.423
Standard

Öhrm, der ternäre Operator an der Stelle ist doch recht unsinnig. Wenn ich 'ne Zahl modulo 2 nehme, kommt logischerweise immer 0 oder 1 raus. Und wieso soll ich denn bitte prüfen, ob die Zahl 0 ist, um ihr dann eine 0 zuzuweisen bzw. sonst eine 1? Das sind die Werte, die die Zahl sowieso schon angenommen hat und somit ist das ein komplett überflüssiger Schritt.

Zum Topic:

Ich nutze für MySQL-Zufallsanfragen immer:
Code:
1:
2:
3:
SELECT foo FROM table ORDER BY RAND( UNIX_TIMESTAMP()*UNIX_TIMESTAMP() )
Und kann mich eigentlich nicht über "schlechte Zufälle" beschweren...
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse

Geändert von tleilax (01.10.2006 um 13:36:55 Uhr)
tleilax ist offline  
Alt 01.10.2006, 13:38:47   #19 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.530
Standard

Zitat:
Zitat von tleilax Beitrag anzeigen
Ich nutze für MySQL-Zufallsanfragen immer:
Code:
1:
2:
3:
SELECT foo FROM table ORDER BY RAND( UNIX_TIMESTAMP()*UNIX_TIMESTAMP() )
Und kann mich eigentlich nicht über "schlechte Zufälle" beschweren...
Dito

Geändert von flaschenkind (01.10.2006 um 13:38:59 Uhr)
flaschenkind ist offline  
Alt 01.10.2006, 16:47:11   #20 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von hatty Beitrag anzeigen
Durch den timestamp soll verhintert werden das er kurz hintereinander zweimal das gleiche aufruft. wenn einen das egal ist reicht die funktion seed=mt_rand(); die auf jeden fall besser ist als die funktion rand()

Gruss hatty
öhm, da liegst du aber ganz stark auf dem holzweg^^
deine funktion mt_rand(0,time()) würde mir jetzt eine Zufallszahl von 0-1159713916 ausspucken, mt_rand() da es den maximalen wert des betriebssystems nutzt gibt mir auf einer windowsmaschine nun aber zufallszahlen von 0-2147483647, auf Linux-Servern ist die zahl nich deutlich höher
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline  
Alt 01.10.2006, 16:48:43   #21 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von tleilax Beitrag anzeigen
Code:
1:
2:
3:
SELECT foo FROM table ORDER BY RAND( UNIX_TIMESTAMP()*UNIX_TIMESTAMP() )
Und kann mich eigentlich nicht über "schlechte Zufälle" beschweren...
ich hatte genau diesen code in einem Script drinnen und wenn ich die abfrage zweimal hintereinander ausgeführt habe, bekam ich jedesmal die gleichen Zeilen zurück, über den Umweg mit einer Zufallszahl, die vom PHP aus kommt, ging alles ohne Probleme
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline  
Alt 01.10.2006, 17:30:16   #22 (permalink)
Erfahrener Benutzer

ID: 41926
Lose-Remote

Reg: 24.04.2006
Beiträge: 832
Standard

Das war als beispiel für eine 50:50 abfrage, wo man nur zwei werte braucht und die man bei Spielen benutzen kann, gedacht und wo die funktion ziehmlich genau ist. Es bezieht sich nicht auf die frage eine gute random funktion zu haben wenn man mehr als zwei werte hat.


Zitat:
Zitat von tleilax Beitrag anzeigen
Öhrm, der ternäre Operator an der Stelle ist doch recht unsinnig. Wenn ich 'ne Zahl modulo 2 nehme, kommt logischerweise immer 0 oder 1 raus. Und wieso soll ich denn bitte prüfen, ob die Zahl 0 ist, um ihr dann eine 0 zuzuweisen bzw. sonst eine 1? Das sind die Werte, die die Zahl sowieso schon angenommen hat und somit ist das ein komplett überflüssiger Schritt.

Zum Topic:

Ich nutze für MySQL-Zufallsanfragen immer:
Code:
1:
2:
3:
SELECT foo FROM table ORDER BY RAND( UNIX_TIMESTAMP()*UNIX_TIMESTAMP() )
Und kann mich eigentlich nicht über "schlechte Zufälle" beschweren...
hatty ist offline  
Alt 01.10.2006, 17:42:40   #23 (permalink)
Erfahrener Benutzer

ID: 41926
Lose-Remote

Reg: 24.04.2006
Beiträge: 832
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
öhm, da liegst du aber ganz stark auf dem holzweg^^
deine funktion mt_rand(0,time()) würde mir jetzt eine Zufallszahl von 0-1159713916 ausspucken, mt_rand() da es den maximalen wert des betriebssystems nutzt gibt mir auf einer windowsmaschine nun aber zufallszahlen von 0-2147483647, auf Linux-Servern ist die zahl nich deutlich höher

da kannst du recht haben so gut kenn ich mich da nicht aus. Nur ist time() ein wert der sich ständig ändert. 2147483647 ändert sich nicht. Ich kenne mich nicht mit wahrscheinlichkeitsrechnung aus. Ein Kollege der sich damit befasst sagt die wahrscheinlichkeit das eine Zahl öfters hintereinander gezogen wird ist höher bei einer feststehenden zahl als bei einer Zahl die sich ständig ändert. Deshalb sag er mt_rand(0,time()) wäre sehr gut. bei mt_rand() kann es häufiger passieren das mehrmals hintereinander der gleiche Wert kommt. Und die funktion time() soll nur verhindert das man mehrmals hintereinander den gleichen wert angezeigt bekommt.

Kann ja jeder machen wie ein dachdecker. money-sms hat eine Frage gestellt ich hab in eine möglichkeit genannt. Andere haben ihn andere möglichkeiten genannt.

Gruss hatty
hatty ist offline  
Alt 01.10.2006, 17:50:41   #24 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

hmm, vergiss einfach was dein kollege dir gesagt hat, das ist totaler quatsch
Die Qualität der zufallszahlen ist gleich, im Gegenteil, da meine Methode doppelt soviele Möglichkeiten hat, bringt sie noch mehr verschiedene Möglichkeiten.
Nur nach dem Sinn muss man sich fragen, denn das soll ja nur eine Startwert-Initialisierung sein, von daher ist es eigentlich recht egal, man könnte nur damit argumentieren, dass mein Code einen ganz kleinen tick (nano-sekunden-bereich) schneller ist, da er nicht noch die funktion time() aufrufen muss. Aber die Qualität der Zufallszahlen ist durch das Verwenden des gleichen Verfahrens (Mersenne-Twister) gleich, nur die Anzahl der Möglichkeiten unterscheiden sich eben, auf Grund ihrer verschiedenen Wertebereiche
Hoffe das ist nun klarer geworden
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline  
Alt 01.10.2006, 18:28:13   #25 (permalink)
schwankend^^

ID: 215354
Lose-Remote
Reallife

Reg: 22.05.2006
Beiträge: 1.559
Standard

ist das problem schon gelöst? du könntest auch nen zufällige züfälligen string mit ner zahl machen und dann in der tabelle noch das feld id zufüfen und dann SELECT * WHERE id = '$x'

mfg
Gsus ist offline  
 

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySql-Befehl gesucht KLG Programmierung 9 03.05.2008 01:33:57
IMac oder Mac PRO? Oder doch einen Mac Book? :think: Duderich Hardware 6 19.10.2007 01:04:40
[MySQL] Repair-Befehl Zeitter1 Programmierung 6 02.06.2007 18:02:12
MySQL Befehl keinschnee Scripts & Software 5 07.05.2006 10:58:16
[MySQL] Zufällig einen oder mehrere Datensätze auswählen theHacker FAQ und Archiv 0 29.04.2006 16:01:41


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10:52 Uhr.