Announcement

Collapse
No announcement yet.

Zufallszahlen !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    ? beispiel

    Comment


    • #17
      hab mich eben rangesetzt und alles etwas verändert.
      Code:
      int TForm1::RandZahl()
      {
      if (lauf>=randzahl)
        return 0;
      bool check=false; int x;
      do
      {
      check=false;
      x=random(randzahl);
      if(lauf){
        for (int y=0;y<lauf;y++)
          if (zufall[y]==x)
            check=true;}
      else
        zufall[0]=x;
      }
      while(check);
        zufall[lauf]=x;
        return x;
      }
      du rufst immer noch normal die funktion auf, allerdings hat sie nun ne abbruchbedingung, sodass du sobald du alle möglichen zahlen erhalten hast nur noch 0 zurückbekommst.
      und bei x=random(randzahl); ist randzahl eine integer variable der du den bereich zuweist aus dem du zahlen ziehen willst. also z.b für 0-99 dann randzahl=100;

      bei mir klappts so, aber lass christian noch seinen segen darüber geben ^^

      Gruß

      Comment


      • #18
        mal so probieren







        Code:
        int zufall[20];
        int lauf=0;
        
        .......
        
        
        int GetZahl()
        {
        bool check;
        int zahl;
        do
        	{
        	check=false;
        	zahl=random(50);
        	for(int x=0;x<lauf;x++)
            	{
        		if(zahl==zufall[x])
        			{
        			check=true;
                    break;
        			}
        		}
        
        	}while(check);
        if(!check&&lauf<20)
        	{
        	zufall[lauf]=zahl;
        	lauf++;
        	return zahl;
        	}
        return-1;
        }
        Christian

        Comment


        • #19
          und was hälst du von meinem code ? nicht zu gebrauchen ?

          Comment


          • #20
            Originally posted by Christian Marquardt View Post
            mal so probieren







            Code:
            int zufall[20];
            int lauf=0;
            
            .......
            
            
            int GetZahl()
            {
            bool check;
            int zahl;
            do
            	{
            	check=false;
            	zahl=random(50);
            	for(int x=0;x<lauf;x++)
                	{
            		if(zahl==zufall[x])
            			{
            			check=true;
                        break;
            			}
            		}
            
            	}while(check);
            if(!check&&lauf<20)
            	{
            	zufall[lauf]=zahl;
            	lauf++;
            	return zahl;
            	}
            return-1;
            }

            also ist dann zahl die Variable die ich benutzen kann?

            bsp.: Wort=mem_woerter->Lines->Strings[zahl]; oder seh ich das falsch ??

            also wenn meine Vermutung richtig ist dann muss ich ja nur die Funktion aufrufen un dann mein : Wort=mem_woerter->Lines->Strings[zahl]; hinschreiben oder ?


            PS.: Sollen die Variablen ->>>>

            int zufall[20];
            int lauf=0;

            in Private deklariert werden ja oder? so sieht es mal aus
            Zuletzt editiert von Mister Love; 11.04.2007, 01:06.

            Comment


            • #21
              und was hälst du von meinem code ? nicht zu gebrauchen ?
              Wenn er funktioniert, dann funktioniert er. Wollte bloß eine Alternative ohne rekursiven Aufruf darstellen.

              @Mister Love

              cOnstan und ich habe dir FUNKTONEN gegeben. Schau die Posting 4 an. Ob du die Variablen als Klassenvariablen oder globale nimmst hängt davon ab, ob du die Funktion als Klassenfunktion definierst
              Christian

              Comment


              • #22
                ja kk ich glaube es geht bis jetzt hatte ich keine doppelten! danke !!

                Comment


                • #23
                  Originally posted by Christian Marquardt View Post
                  Wenn er funktioniert, dann funktioniert er. Wollte bloß eine Alternative ohne rekursiven Aufruf darstellen.
                  mein 2ter code ist doch ohne rekursiven aufruf, da habe ich doch ne schleife benutzt.

                  Comment


                  • #24
                    sry, nicht realisiert, das Alter....
                    Christian

                    Comment


                    • #25
                      ich bekomm bei jedem neuen Lauf die gleichen Zufallszahlen.

                      Also ich starte das Spiel dann kommen Diesel,Wort,Apfel usw. dann schließe ich das Spiel.

                      Mach es wieder auf und es kommen schon wieder Diesel,Wort,Apfel usw.

                      Comment


                      • #26
                        Rufst Du beim Programmstart Randomoize() oder randomize() auf, um den Zufallszahlengenerator zu initialisieren? Falls nicht, bekommst Du logischerweise immer die gleichen Zahlen geliefert.

                        Gruß knut

                        Comment


                        • #27
                          nene sry Mann ich hatte das srand(time(0)); ausgeklammert

                          und ich benutz kein randomize sondern einfach zahl=rand%(...)

                          Comment


                          • #28
                            ...und bevor Du das benutzt, solltest Du beim Programmstart eben randomize() aufrufen, wie ich schon sagte.

                            Comment


                            • #29
                              meinst du das sollte ich in die Funktion die mir Zufallszahlen zieht reinschreiben ?

                              Comment


                              • #30
                                Nein! Lies bitte nochmal in Ruhe durch, was ich vorher geschrieben habe und bemühe die Hilfe zu 'randomize' und 'rand' bzw. 'srand' oder 'random'.

                                Comment

                                Working...
                                X