Hilfe C (Numerik)



  • Hi,

    wir haben diese folgende Aufgabe in unserer Vorlesung in Numerik. Null Ahnung wie ich diese angehen soll. Würde mich bitte über etwas Code freuen sonst blick ich da nicht durch.

    Füllen Sie ein Rechteck ([­2;3] x [1;4]) mit 10.000 gleichverteilten Zufallswerten(drand48 verwenden). C Code schreiben!

    Danke schonmal für die Hilfe!


  • Mod

    Eine Zahl zwischen 2 und 3 ziehen, eine Zahl zwischen 1 und 4 ziehen, zusammenfassen zu einem Koordinatenpunkt, 10000 wiederholen. C Code schreiben!

    Bitteschön für die Hilfe!



  • SeppJ schrieb:

    Eine Zahl zwischen 2 und 3 ziehen, eine Zahl zwischen 1 und 4 ziehen, zusammenfassen zu einem Koordinatenpunkt, 10000 wiederholen. C Code schreiben!

    Bitteschön für die Hilfe!

    int N = 10000;
    int rectangle[N][2];
    
    for(n=0; n<N; ++n){
    
    int x =  (-2) + drand48() * 6;
    int y =  1 + drand48() * 4;
    
    rectangle[n][0] = x;
    rectangle[n][1] = y;
    
    }
    

    Würde mir jetzt spontan das hier einfallen. Also die Zufallszahlen erzeugen und multiplizieren und in ein Zweidimensionales Array mit einer Größe 10000 packen.
    Wäre das so richtig.

    PS: wenns im Code irgendwelche sprachlichen Fehler gibt bitte um Hinweis wie es besser gemacht werden könnte. Hab bisher nur Java gelernt.

    Danke



  • Was wäre denn dann das hier bitte für eine Vorgehensweise bitte?

    Codefragment Rechteck 5x2 mit 10k gleichverteilten Zufallspunkten füllen. (Code zum erzeugen der Punkte)



  • VLA benutzen nur (Java)Deppen.



  • Yumi345 schrieb:

    int rectangle[N][2];
    [...]
    for(n=0; n<=N; ++n){
    [...]
    rectangle[n][0] = x;
    }
    

    Wäre das so richtig.

    die Bedingung in der for-Schleife muß "n < N" sein, sonst schreibst du in ein 10001 x 2 Feld.



  • Yumi345 schrieb:

    Was wäre denn dann das hier bitte für eine Vorgehensweise bitte?

    Codefragment Rechteck 5x2 mit 10k gleichverteilten Zufallspunkten füllen. (Code zum erzeugen der Punkte)

    vll so?

    int N = 10000;
    int rectangle[N];
    
    for(n=0; n<N; ++n){
    
    int x =  5 * drand48();
    int y =  2 * drand48();
    
    int z = x*y;
    
    rectangle[n]= z;
    
    }
    

    @zufallswert danke habs ausgebessert war ein gewohnheitsding.



  • for(n=0; n<N; ++n){
    
    int x =  5 * drand48();
    int y =  2 * drand48();
    
    int z = x*y;
    
    rectangle[n]= z;
    }
    

    Oh je, entspricht das denn überhaupt der Aufgabenstellen bzw ist rectangle[n] noch gleichverteilt?

    ---

    Ich glaube du verstehst die Aufgabe nicht. Für mich liest sich so: Ich habe ein Rechteck. Die X Koordinate geht von 2.0 bis 3.0, die Y Koordinate geht von 1.0 bis 4.0.

    Da steht "Füllen Sie ein Rechteck ([­2;3] x [1;4]) mit 10.000 gleichverteilten Zufallswerten(drand48 verwenden)." Nach Adam Riesling würde ich vermuten, dass hier 10000 Koordinatenpunkte gesucht werden, welche exakt in diesem Dreieck liegen!

    Lies dir bitte nochmal die Aufgabenstellung in aller Ruhe durch.


  • Mod

    Ich vermute mal, er hat seine Hausaufgaben vor mindestens 2 Wochen abgegeben 🙂


Log in to reply