anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 19 Mär, 2024 09:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 60 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 09:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Du teilst eine Zahl durch 10 und fragst dich, warum dabei eine Fliesskommazahl herauskommt? ;) Entweder castest du das Ergebnis mit (int) um, wenn du wirklich einen Integer willst, oder du rundest das Ergebnis mit round($float, 0); oder du rundest ab mit floor($float); oder du rundest auf mit ceil($float);
Dass du "nur" Zahlen mit einer Vorkommastelle findest (Ich nehm mal an, du meinst mit Vorkommastelle 1-9) ist auch logisch und nennt sich Häufigkeit... 1-9 ist halt etwa 9x so häufig als 0.

Oder du lebst mit der Fliesskommazahl und änderst das Datenbankfeld von int auf float.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 09:16 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mo 04 Aug, 2008 07:52
Beiträge: 31
Geschlecht: Männlich
LoGD: www.lotgd.de
aus dem code ist nicht ersichtlich, wieso der Wert zu klein ist.
Schieb das ganze mal in eine Variable und lass dir diese ausgeben.
Es besteht die Möglichkeit, dass das Datenbankfeld zu klein ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 10:33 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
ok, dann alles:

create.php:
$arr = array();
if ( $_POST['sex'] ) {
$arr['moc'] = mt_rand( 1000 , 2500 ) /100;
}
else {
$arr['moc'] = mt_rand( 900 , 1800 ) /100;
}
$strmoc = serialize( $arr );

eine testausgabe in der village.php funktioniert fehlerlos. jedoch werden nur zahlen wie 1,94 oder 6,14 erstellt.
und wenn männlich und als zufallszahl mindestens 1000 ausgegeben wird ist diese durch 100 geteilt doch immernoch mindestens 10?

und sorry, was ist eine Fliesskommazahl? (mathe=3,6) mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 11:26 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Möp!

Das Problem liegt hier:
PHP:
mt_rand( 900 , 1800 ) /100;


Du legst eine Zufallswert von 900 bis 1800 fest, der wird anschließend durch 100 dividiert. Das heißt bei einem Wert von 922 durch 100 ist das 9,22. ;-)

Du siehst also wo das Problem ist? Es fängt bei < 1000 an. Ersetze die 900 durch einen Wert ab 1000 und höher, dann Funktioniert es einwandfrei.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 11:29 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mo 04 Aug, 2008 07:52
Beiträge: 31
Geschlecht: Männlich
LoGD: www.lotgd.de
Eliwood hat geschrieben:
Du teilst eine Zahl durch 10 und fragst dich, warum dabei eine Fliesskommazahl herauskommt? ;) Entweder castest du das Ergebnis mit (int) um, wenn du wirklich einen Integer willst, oder du rundest das Ergebnis mit round($float, 0); oder du rundest ab mit floor($float); oder du rundest auf mit ceil($float);
Dass du "nur" Zahlen mit einer Vorkommastelle findest (Ich nehm mal an, du meinst mit Vorkommastelle 1-9) ist auch logisch und nennt sich Häufigkeit... 1-9 ist halt etwa 9x so häufig als 0.

Oder du lebst mit der Fliesskommazahl und änderst das Datenbankfeld von int auf float.


Naja in seinem Beispiel düfte die kleinste, erreichbare Zahl aber bei 9.00 und die größte bei 25.00 liegen. 1.64 sind da quasi nicht möglich.
(In meinen Tests kam das auch nicht vor.)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 11:52 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
*kopfschüttel* sorry ... nun funktioniert es. ich hab zwar keine ahnung was ich verändert haben soll (vor einer halben stunde funktionierte es so wie oben beschrieben), nun gibt er zahlen wie 12.31 oder 13.95 aus.
trotzdem danke @all.

bleibt trotzdem noch die ausgabe in der vital info.
.templatereplace("statrow",array("title"=>"mocgröße","value"=>$u['moc']))
reicht ja nicht.
mfg und nochmal tschuldigung!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Mo 20 Jul, 2009 12:14 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 12 Mai, 2008 21:51
Beiträge: 137
Geschlecht: Weiblich
warum nutzt du eigentlich ein array? ist doch vollkommen unsinnig oo
mein vorschlag: speicher das ganz normal in nem db feld ab, also nicht als array... ist ja eh nur ein wert drinnen und dann ist die ausgabe auch wieder viel einfacher...
arrays werden nur benötigt wenn man mehrere daten in einem Feld haben will (sprich: verteilung der drachenpunkte und prefs)
da du da ja nur eine sache speicherst kannst du auch gleich das array weglassen..
kein serialize mehr nötig... *zumindest wenn cihs richtig verstanden habe*

just my 2 cents
minerva


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 02:16 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
Also nach der Beschreibung soll ja mt_rand(min,max) eine Zufallszahl zwischen min und max liefern. Von der Seite sehe ich erstmal nichts falsches.
Wie siehts denn mit der Initialisierung des Zufallsgenerators aus? Der Zufall ist nämlich gar nicht zufällig sondern wird irgendwie -meist in Verbindung mit der Zeit- berechnet. Da wäre es nun möglich, dass immer nahezu identische Zufallswerte kommen.
Wieso nimmst du eigentlich nicht die Funktion e_rand?
Und allgemein zur Fehlersuche ist es hilfreich, Kontroll-Outputs einzubauen, damit du den Wert von diversen Variablen an unterschiedlichen Verarbeitungszuständen siehst.

Noch eine Anmerkung zum prefs-Array: Das wird von der common bei jedem Seitenabruf unserialisiert und am Ende wieder serialisiert. Optimal ist das mit Sicherheit nicht, aber da an vielen Stellen das Vorhandensein der Werte erwartet wird bleibts halt so.

_________________
if(date("ymmd")=="10050502") echo("Der alte Sack wird heute 40");


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 09:33 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
... vielleicht weil e_rand gar nicht die gewünschte Verteilung liefert - siehe dazu auch diesen Thread.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 11:50 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
hallo, ich habe das genommen weil ich es als einstigstes gefunden und vor allem auch verstanden habe. beabsichtigt wird die ausgabe einer zufallszahl zwischen 10 und 25, wo die wahrscheinlichkeit mittlere zahlen zu erhalten größer ist, die zahlen 10-11 und 24-25 jedoch nicht unmöglich sind.
ps.: wie gesagt funktionieren die zufallszahlen nun wie gewünscht, bleibt noch die frage wie eine anzeige der zufallszahl in der vital info angezeigt wird, bzw. wie es in der create.php ohne array gemacht werden kann, da es ja nicht in prefs, sondern einem eigenen db-feld gespeichert wird. mfg

ps2.: der fehler, warum anfangs keine zahlen mit 2 vorkommastellen 1000/100=10 ausgegeben wurden war dass leerzeichen bei /100
mt_rand(1000 , 2500) / 100;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 11:57 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Ich glaube nicht daran, daß es daran lag..

Ich bleibe immer noch fest bei meinem Beitrag, daß es an Zahlen unter 1000 liegt, wie man weiter oben in meinem Beitrag nachlesen kann. Denn wenn Du zahlen durch 100 dividierst, die kleiner als 1000 sind, ergibt das x,xy. Punkt.

Du hattest nämlich oben die Funktion mt_rand zweimal in Verwendung und bei der zweiten hattest Du 900 bis 1800 festgelegt und da war der Wurm drin. Aber kannst es Dir ja selbst ausrechen.. Dividiere mal einen Wert der unter 1000 liegt durch 100.. dann wirst es sehen. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 11:59 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
drimatu hat geschrieben:
ps2.: der fehler, warum anfangs keine zahlen mit 2 vorkommastellen 1000/100=10 ausgegeben wurden war dass leerzeichen bei /100
mt_rand(1000 , 2500) / 100;


Nein, das wars garantiert nicht. Dem PHP-Interpreter sind Leerzeichen zwischen den Ausdrücken ziemlich egal. Vor allem bei mathematischen Operatoren.

Edit: Wie? Du willst eine Zufallszahl zwischen 10 25, <= 11 und >= 24 sollen dabei nicht möglich sein? Warum nimmst du dann mt_rand nicht einfach zwischen 11 und 24? :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 12:45 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
ich glaub ich besuche einen kommunikationskurs.
zahl zwischen 10 und 25, wo die mittelren zahlen wahrscheinlicher sind, jedoch zahlen wie 10, 11, 24 und 25 aber auch NICHT unmöglich sind.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Di 21 Jul, 2009 13:03 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Was du suchst ist ein Zahlengenerator, der normalverteilt Zufallszahlen ausspuckt. PHP kann das _nicht_ von Haus aus.
Du könntest dir aber mit bekannten Algorythmen einen aus normalen Zufallszahlen basteln. Oder du suchst dir einfach eine Funktion hier im Forum, die das kann. gauss_rand() heissen beide Versionen - die eine ist von Auric, die andere von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Sa 31 Okt, 2009 23:23 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
[Falscher Thread]

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Fr 26 Aug, 2011 16:00 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
so, nach über 2 jahren? muss ich das thema noch mal nutzen.
$beispiel = mt_rand((2000 , 15000) /1000);
funktionierte mit allen varianten und möglichkeiten problemlos, bis vor einem festplattencrash.
ein dreiviertel jahr später möchte ich nun wieder anfangen das alles wieder aufzubauen, aber nun wird das , zwischen den beiden zahlen nicht mehr akzeptiert obwohl es früher tadellos funktionierte und es auch in diversen tutorials so drin steht.
jemand evt. eine lösung für mich? mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Fr 26 Aug, 2011 18:22 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
vll ohne Leerzeichen? sont. Kein Plan^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Fr 26 Aug, 2011 18:36 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
nein leider nicht *g* trotzdem danke. lg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Fr 26 Aug, 2011 21:13 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
drimatu hat geschrieben:
so, nach über 2 jahren? muss ich das thema noch mal nutzen.
$beispiel = mt_rand((2000 , 15000) /1000);
funktionierte mit allen varianten und möglichkeiten problemlos, bis vor einem festplattencrash.
ein dreiviertel jahr später möchte ich nun wieder anfangen das alles wieder aufzubauen, aber nun wird das , zwischen den beiden zahlen nicht mehr akzeptiert obwohl es früher tadellos funktionierte und es auch in diversen tutorials so drin steht.
jemand evt. eine lösung für mich? mfg

Da ist eine falsche Klammerung drin, wodurch mt_rand nur einen Parameter bekommt.

$beispiel = mt_rand(2000, 15000) / 1000;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: zufallszahlen in logd
BeitragVerfasst: Sa 27 Aug, 2011 00:16 
Offline
Profi
Profi

Registriert: So 17 Mai, 2009 11:57
Beiträge: 106
Wohnort: chemnitz, cottbus
Geschlecht: Männlich
LoGD: noch offline
Skype: drimatu
oh danke danke danke. ich könnte dich küssen dafür.
ah, nein, lass ich doch besser.
öhm, sachlich: vielen dank dafür. jetzt kann ich endlich normal schlafen. mfg


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 60 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum