Hilfe bei Zufallszahl [sry]
-
Warum passt es nicht?
wurf wuerfeln(wurf w){
w.x=(rand()/RAND_MAX)*3-1.5;
w.y=(rand()/RAND_MAX)*3-1.5;
return w;
}w.x & w.y sind double habe den rechten teil versucht in double umzuwandln,hat nicht hingehauen.
-
Hallo
Was passt denn nicht. Mit so einer fehlerbeschreibung wird und kann dir kaum einer helfen.
chrische
-
ok,da hast du wohl recht.sry.
sowohl w.x als auch w.y wird kein wert zugewiesen.bleibeb beide bei 0.
habe testeshalbe mal 2hilfvariablen reingemacht und für diese rand() und RAND_MAX berechnet,was funktionierte.Jedoch rand()/RAND_MAX nicht.
-
rand() und RAND_MAX sind beide int's wenn du die dividierst kommt eigentlich immer 0 raus.
Machs so:w.x=((double)rand()/RAND_MAX)*3.0-1.5;Kurt
-
So hab ichs bereits versucht.Aber es kommen unlogisch hohe bzw negative Zahlen raus.
Rein theoretisch muss ein Zahl zwischen -1,5 und 1,5 rauskommen.
rand()/RAND_MAX gibt eine Zahl kleiner als 1 aus (höchstens 1)*3 -> höchstens 3 -> -1,5 höchstens 1,5 oder hab ich einen Denkfehler?
-
Also bei mir geht das einwandfrei.
Denke dein cast ist nicht an der richtigen Stelle.
Kurt
-
hm, in wie fern? Ich hab deine Zeile zuvor identisch benutzt
-
Mein code:
include <iostream> int main() { for ( int i = 0; i < 10; ++i ) { double x=((double)rand()/RAND_MAX)*3.0-1.5; std::cout << x << std::endl; } return 0; }Output:
kurt@power:~$ ./a.out 1.02056 -0.316851 0.849298 0.89532 1.23494 -0.907346 -0.494332 0.804689 -0.666676 0.16191Kurt
Edit: So wär das Ergebnis immer -1.5
double x=((double)(rand()/RAND_MAX))*3.0-1.5;
-
Ich peils nicht,habs genauso.warum macht ers bei mir nicht...
-
Kanns sein dass dein code in einer function steht w ein parameter ist und du die zahlen ausserhalb der funktion ausgibst ?
Kurt
-
ja so ists,ich muss mit den Zahlen noch weiterrechnen in ner andren function.aber wenn ich testes halber die ausgerechneten Zahlen schon in dieser funktion ausgebe,kommt müll.
w ist bei mir eine structurvariable
-
Verstehe ich dich richtig innerhalb der funktion wo die zahlen erzeugt werden wird müll angezeigt ? Kann nicht sein. Wenns ausserhalb Müll ist solltest du eine Referenz übergeben.
Kurt
-
richtig,innerhalb der funktion.Das ist ja das komische.
-
Hallo
Testest du nachdem du Werte zugewiesen hast oder davor?
chrische
-
Jetzt kommen wir ohne code nicht mehr weiter.
K
-
nachdem
-
so danke für die hilfe jungs,auch wenns noch nicht geklappt hat

meine lady ist da,muss nun weg.bis denn dann
-
Hallo
ZuK schrieb:
Jetzt kommen wir ohne code nicht mehr weiter.
KDas kann ich nur befürworten. Leider ist er ja jetzt weg. Mich hätte schon mal interessiert, wo denn der Fehler lag.
chrische
-
Wenn du die Werte des Parameters nach außen zurückgeben willst, mußt du ihn als Referenz deklarieren ("int myfunc(mystruct**&** w)"), sonst arbeitest du auf einer Kopie des gegebenen Structs und die wird am Ende der Funktion gelöscht.