unzulässige verwendung einer fließkommazahl



  • OMG operator^ potenziert nicht, das ist bitweises EOR, verwende die Funktion pow().



  • bcpschakal schrieb:

    das mit %2 doch wiederum ne zahl zwischen 0 und 1 ergeben oder?

    Das ist der Rest eine Ganzahldivision. Mögliche Lösungen in den Zeilen 108f sind 0 und 1.



  • ok danke für die tipps, ^ war wirklich doof (wie gesagt, hab nie programmieren gelernt)
    und das mit dem zwischen 0 und 1 konnte natürlich nicht klappen

    so hier sollte es doch eigentlich funktionieren oder?

    x= rand()%10000;
    	  y= rand()%10000;
    	  x=x/10000;
    	  y=y/10000;
    

    jedoch bekomme ich dann ständig gleiche zahlen, zb:

    0,0629
    0,1613
    0,0629
    0,1613
    0,2663
    0,0146
    0,2663
    0,0146
    0,8997
    0,0787
    0,8997
    0,0787
    0,7919
    0,9511
    0,7919
    0,9511

    woran liegt das?

    des weiteren bekomme ich im verlauf des programms noch einen fehler:
    sqrt: DOMAIN error

    die wurzel nutze ich hier:

    a=(2*x-1)*sqrt((-2*log(q)/q));
    

    was hab ich dort falsch gemacht?



  • Weil du die Quadratwurzel aus einer negativen Zahl ziehst. Du solltest die Mathegrundlagen aber beherrschen wenn du Statistikprogramme scheibst.



  • bcpschakal schrieb:

    jedoch bekomme ich dann ständig gleiche zahlen

    Rufe srand() nur einmal auf, vllt im Konstruktor des Forms.



  • witte schrieb:

    Weil du die Quadratwurzel aus einer negativen Zahl ziehst. Du solltest die Mathegrundlagen aber beherrschen wenn du Statistikprogramme scheibst.

    tue ich nicht, da ln(q) neagtiv ist und ich somit eigtl die wurzel aus einer positiven zahl ziehen müsste

    (ich gehe davon aus, das log() dem ln entspricht)

    man sollte schon die mathematischen grundlagen kennen ....



  • bcpschakal schrieb:

    witte schrieb:

    Weil du die Quadratwurzel aus einer negativen Zahl ziehst. Du solltest die Mathegrundlagen aber beherrschen wenn du Statistikprogramme scheibst.

    tue ich nicht, da ln(q) neagtiv ist und ich somit eigtl die wurzel aus einer positiven zahl ziehen müsste

    (ich gehe davon aus, das log() dem ln entspricht)

    man sollte schon die mathematischen grundlagen kennen ....

    nicht beachten, hab grad gesehen, dass der algortihmus total banane ist

    mein mathe is richtig, aber das programm nicht 😉



  • Ich wollte gerade sagen dass die Abbruchbedingung der Schleife dann falsch ist...



  • so sollte es doch nun gehen oder?

    {
    	  x= rand()%10000;
    	  y= rand()%10000;
    	  x=x/10000;
    	  y=y/10000;
    		  q=(2*x-1)*(2*x-1) + (2*y-1)*(2*y-1);
    	  }
    	  while ((0>=q)||(q>=1));
    	  a=(2*x-1)*sqrt((-2*log(q)/q));
    

    nun ist log(q) auch wirklich negativ
    meine do while schleife war falsch



  • witte schrieb:

    Ich wollte gerade sagen dass die Abbruchbedingung der Schleife dann falsch ist...

    genau



  • hab noch eine weitere frage,

    ich speichere ja das memofeld in eine textdatei, wie kann ich nun den namen dieser datei noch wählbar machen?



  • Schau mal unter TSaveDialog, oder primitiver: eine InputBox, in die man den Dateinamen eingibt.


Anmelden zum Antworten