tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
895
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FuMe FuMe ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    10
    Hallo alle zusammen!

    Ich hätte schon wieder eine Frage. Und zwar geht's um Zufallszahlen.
    Ich weiß zwar, dass ich mit "Random" Zufallszahlen machen kann - aber wie kann ich zB 10-er Sprünge oder ähnliches machen?

    Beispiel:
    Ich will, dass es mir aus den Zahlen 2-9; 10,20,30....90; (mit 10-er Sprüngen) und 200, 300,...900 (100er Sprünge) eine Zahl auswählt - jetzt wäre eure Hilfe gefrage - bitte

    Vielen Dank
    mfg
    fume
     

  2. #2
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi.

    Das könntest z.B. so machen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    static string[] Zahlen = 
    {
           "10",
           "20",
           "30",
           "40"
    };

    Dann schreibst ne Methode:

    Code :
    1
    2
    3
    4
    5
    
    private void ZieheZahl()
    {
            Random generator = new Random();
            Console.WriteLine(Zahlen[generator.Next(0, 4)]);
    }

    Hoffe dir geholfen zu haben!


    MfG Alexander12
     

  3. #3
    Pendergast Pendergast ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    183
    Man könnte auch eine Zufallszahl von 1 bis 9 ermitteln, und diese mit 10, 100 oder mit pi multiplizieren...
     

  4. #4
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi.

    Ich find die methode oben einfacher. Da musst nichts rechnen etc. Da schreibst die Zahlen 10-100 oder was auch immer rein und der Zufallsgenerator wählt was aus.


    MfG Alexander12
     

  5. #5
    MFC openGL MFC openGL ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    483
    Aber die Multi Methode ist einfacher, und vorallem DYNAMISCH, deine ist das nicht Alex... Und du wolltest doch sauber programmieren, nicht wahr ?

    Und was machst du eigendlich wenn er die Zahlen bis in dem 200 Mio Bereich in 10er Schritten braucht ?

    Gruß

    MFC OpenGL
     
    Sprache : C/C++/C# & MFC
    Compiler : MSVC++ 7 / VS2003.net
    OS : Windows XP/2k

  6. #6
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi.

    Naja, das mit dem Rechnen sähe dann so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    private int Ziehezahl(int Multiplikator)
    {
            Random generator = new Random();
            int Zahl = generator.Next(1, 9);
            Zahl = Zahl * Multiplikator;
            return Zahl;
    }

    So, die rufst dann wie folgt z.B. in nem EventHandler auf:

    Code :
    1
    
    int GezogeneZahl = Ziehezahl(10);


    MfG Alexander12
     

  7. #7
    MFC openGL MFC openGL ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    483
    Zitat Zitat von Alexander12
    Hi.

    Ich hätt gedacht von 100-1000 oder so in hunderter-Sprüngen.
    Wenns mehr ist, dann das mit dem rechnen, klar.

    Vllt. könnte er es uns ja sagen bis wie viel er das braucht.


    MfG Alexander12
    Genau das ist das Problem, es ist vollkommen unerheblich in welchem Zahlenbereich er die Zahlen braucht ! Ich glaube Norbert war es, der dir mal sagte (und alle anderen hier versuchen dir das auch immer wieder einzubläuen), dass du den Code immer so schreiben sollst, das er WIEDERVERWENDBAR ist. Investiere lieber 10 min mehr in den Code, und mache ihn Dynamisch, als das du den Ruck Zuck hinballerst, aber später einfach nichts mehr davon hast. Was machst du z.B. wenn der Chef kommt, und sagt ok, haste gut gemacht, dein Programm läuft soweit super. Ich brauche das Programm in 1 Stunde für 200 Mio. Zahlen.

    Was dann ? Sagst du ihm das du keinen Bock hattest, das anständig zu machen ?

    Oder anderes Beispiel. Du willst einen Misch Algo schreiben, für ein Kartenspiel. Machst du den dann auch so, das der immer nur 32 Karten mischen kann ? Wohl kaum oder ? Du wirst doch wohl so schlau sein, und den für X Karten schreiben, denn es kann ja auch mal nen Rommé Blatt gemischt werden müssen, was dann ? Schreibst doch dann nicht nochmal die Komplette Routine neu.


    Also merke dir das jetzt endlich mal. Dynamische Routinen ersparen dir ZEIT, nicht direkt, sondern später wenn du ein Problem mehrmals hast !

    Gruß

    MFC OpenGL


    PS : Sorry Admins das es nicht ganz zum Thema passt, aber fand das doch wichtig mal zu sagen.
     
    Sprache : C/C++/C# & MFC
    Compiler : MSVC++ 7 / VS2003.net
    OS : Windows XP/2k

  8. #8
    FuMe FuMe ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    10
    hallo alexander,

    das mit dem muliplizieren funktioniert wunderbar - DANKE
    Kannst du mir noch sagen, wie ich ich die 100-er zahlen und 10-er Zahlen gleichzeitig verwenden kann?! - denn bis jetzt kann ich mit dem Mulitplikater entweder 10 - 90 verwenden oder 1-9 - aber nicht gleichzeitig

    Danke für dein Bemühen

    mfg
    fume
     

  9. #9
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi FuME.

    Ich habe das Mal so gemacht, mir ist grad nichts anderes eingefallen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    public int ZieheZahl(int Multiplikator, int Multiplikator2)
    {
        int GezogeneZahl;
        Random Generator = new Random();
        int Zahl = Generator.Next(0,2);
        GezogeneZahl = Generator.Next(1,9);
        if(Zahl == 0)
        {               
            GezogeneZahl = GezogeneZahl * Multiplikator;
        }
        else
        {
            GezogeneZahl = GezogeneZahl * Multiplikator2;
        }
        return GezogeneZahl;
    }

    Und aufrufen dann so z.B.:

    Code :
    1
    
    this.myTextBox.Text = ZieheZahl(10,100).ToString();


    Habe versucht, das möglichst dynamisch zu machen. Wenn mir noch was besseres einfällt werd Ichs posten.

    Habe das auch Mal als Beispielprojekt angehängt, habe auf die Benennung der Controls halt grad keinen Wert gelegt.


    MfG Alexander12

    PS. Allen nen guten Rutsch!
    Angehängte Dateien Angehängte Dateien
     

  10. #10
    MFC openGL MFC openGL ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    483
    Ich glaub echt mit TRITT EIN PFERD

    Wozu braucht deine Funktion 2 Parameter ? Man, DYNAMISCH Was nun wenn er jeden Abstand von 1-1Mio haben will ? Hat die Funktion dann 1 Mio Parameter


    Man... das macht man so :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    public int ZieheZahl(int Multiplikator)
    {
        int GezogeneZahl;
        Random Generator = new Random();
        int Zahl = Generator.Next(0,2);
        GezogeneZahl = Generator.Next(1,9);
    GezogeneZahl = GezogeneZahl * Multiplikator;
    return GezogeneZahl;
    } 
    //Beispiel
    public int Kombi()
    {
    return ZieheZahl(10)+ZieheZahl(100);
    }
    //je nachdem was man braucht... und wenn du ne Kombination aus beidem brauchst, schreibste ne neue Funktion die dann die beiden Ergebnisse verbindet
    this.myTextBox.Text = ZieheZahl(10).ToString();
    this.myTextBox.Text = ZieheZahl(100).ToString();
     
    //oder
    this.myTextBox.Text = Kombi().ToString();

    Ist das soooo schwer zu verstehen, alex ?

    Das sind GRUNDLAGEN Kauf dir endlich nen Buch über OOP, und lern mal struktoriertes Programmieren.

    Langsam wirds echt rund hier...

    Gruß

    MFC OpenGL
    Geändert von MFC openGL (30.12.05 um 00:06 Uhr)
     
    Sprache : C/C++/C# & MFC
    Compiler : MSVC++ 7 / VS2003.net
    OS : Windows XP/2k

  11. #11
    chironex chironex ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    158
    Also mich hat's bei Alex Code auch fast aus dem Sessel geschmissen

    Ich verfolge Alex' Entwicklungsgeschichte ja schon längere Zeit hier, aber da hilft kein Buch über OOP und auch nichts zum Thema strukturierte Programmierung.

    Woran es hier fehlt ist das Verstehen des Problems. Du kannst hundert Bücher über OOA, OOD und OOP lesen, wenn Du kein Gefühl hierfür dafür hast, wirst Du nie guten Code schreiben.

    Sorry Alex, aber versuch, über die Probleme nachzudenken, bevor Du drauf los codest. Ich verstehe, dass Menschen impulsiv sind und am liebsten gleich wie die rote Armee mit der Tür ins Haus krachen. Mir gehts als Entwickler ja auch manchmal nicht anders, mich packt auch oft der Enthusiasmus und das ist auch gut so. Software Entwicklung ist ein kreativer Prozess und der braucht schließlich Motivation.

    Wenn Du mit einem SW-Problem konfrontiert wirst, lehn Dich aber zuerst mal zurück und denk darüber nach, die erste Idee ist meist nicht die beste Als Übung kannst Du Dir (anfangs) die Regel aufstellen, für ein Problem midestens drei Lösungen zu überlegen.

    Aber nicht immer alle drei posten
     

  12. #12
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Ich muss chironex hier eindeutig recht geben.

    Aus Büchern etc. kann man sich den technischen Hintergrund aneignen. Der hilft einem aber nur bedingt.

    Die andere Seite ist die logische Herangehensweise an ein Problem. Welcher Lösungsansatz wird herangezogen? Erst wenn ein logisch korrekter Lösungsansatz vorhanden ist (oder besser mehrere) kommt das technische Wissen zum Tragen. Nämlich wenn sich die Frage "Kann ich das mit den technischen Hilfsmitteln überhaupt so umsetzen?" stellt.

    Daher das beste Rezept einer jeden Großmutter:
    Zuerst nachdenken, dann ....

    Des weiteren:
    Die Herangehensweise an ein Problem kann nicht (meiner Meinung nach) erlernt werden. Ein Grundgespür für logische Abläufe etc. muss vorhanden sein. Dies wird dann durch die Erfahrung, die man im Laufe der Jahre sammelt, verbessert. Nur eben dieses Grundgespür kann nicht erlernt werden. Entweder es ist da oder nicht. Genau hier unterscheiden sich dann schlechte bis gute Programmierer von genialen Programmierern, wobei es hier auch wieder insofern "gefährlich" wird, als dass sich die wirklich genialen Programmierer oft von der Realität verabschieden. Sie schaffen zwar Wahnsinns-Programme, halten aber oft keiner Usability-Prüfung etc. stand.

    Aber wie dem auch sei: Ich hoffe, dass das was ich sagen wollte angekommen ist
     

Ähnliche Themen

  1. Zufallszahlen
    Von WorldRacer im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.06.08, 23:19
  2. zufallszahlen
    Von kurcob im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 25.05.08, 11:07
  3. Zufallszahlen
    Von Gen-Chan im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.04.05, 21:57
  4. zufallszahlen
    Von mihawk im Forum PHP
    Antworten: 3
    Letzter Beitrag: 17.05.04, 17:56
  5. zufallszahlen von 1-6
    Von computers im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 20.01.04, 09:33