| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| Rodney Junior JLI'ler
 
 
 
 Anmeldedatum: 24.09.2003
 Beiträge: 60
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 03.10.2003, 12:56    Titel: Zufallszahlen in C++ |   |  
				| 
 |  
				| Hallo Leute, alle Funktionen die ich zur Zufallszahlen-Erstellung in c++ nutze geben irgendwie immer diesselben Werte wieder.
 Wenn man z.B. eine Zufallszahl zwischen 0 und 500 haben will, was muss ich da machen? wenn man eine Zufallsfunktion direkt 2mal hintereinander ausführt, bekommt man dann die gleichen Werte wieder??
 
 Danke im Vorraus, RODNEY
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| The Lord of Programming Living Legend
 
  
 Alter: 38
 Anmeldedatum: 14.03.2003
 Beiträge: 3122
 
 Medaillen: Keine
 
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| OLiver Super JLI'ler
 
  
 Alter: 34
 Anmeldedatum: 29.06.2003
 Beiträge: 306
 Wohnort: Jena
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 03.10.2003, 13:31    Titel: |   |  
				| 
 |  
				| Ich hab mir eine Headerdatei dafür gemacht: 
 
  	  | Code: |  	  | #ifndef aSCHALTER
 #define aSCHALTER
 #include <ctime>
 #endif
 
 #ifndef bSCHALTER
 #define bSCHALTER
 #include <cstdlib>
 #endif
 
 
 
 inline bool Quote(unsigned short Prozent=50)
 {
 unsigned short p;
 static bool gerandet=0;
 if(!gerandet) {
 srand((unsigned)time(NULL)); gerandet = 1; }
 p = rand() % 100+1;
 if (p > Prozent)
 return 0;
 else
 return 1;
 }
 
 inline unsigned long Rnd(unsigned long Obergrenze,unsigned long Untergrenze=0)
 {
 static bool gerandet=0;
 if(!gerandet) {
 srand((unsigned)time(NULL)); gerandet = 1; }
 return (rand() %(1+ Obergrenze-Untergrenze)+Untergrenze);
 }
 
 | 
 _________________
 http://www.sieder25.org/ (Siedler 2 - Remake)
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Rodney Junior JLI'ler
 
 
 
 Anmeldedatum: 24.09.2003
 Beiträge: 60
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 03.10.2003, 13:34    Titel: |   |  
				| 
 |  
				| auch wenn ich diese FUnktion nutze kommen bei mir nach dem Programmstart immer diesselben Ergebnisse! |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| The Lord of Programming Living Legend
 
  
 Alter: 38
 Anmeldedatum: 14.03.2003
 Beiträge: 3122
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 03.10.2003, 13:37    Titel: |   |  
				| 
 |  
				| Ach so, das meinst du. Dann musst du den Anfangswert für die rand()-Funktion am Anfang des Programms initialisieren:
 
  	  | Code: |  	  | srand(timeGetTime()); | 
 oder so ähnlich.
 _________________
 www.visualgamesentertainment.net
 Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
 (1) Realtime Developer Testing and Debugging Console
 
   Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
 Hilf Schäuble! Damit er auch was findet...
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| KI JLI Master
 
  
 Alter: 40
 Anmeldedatum: 04.07.2003
 Beiträge: 965
 Wohnort: Aachen
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 03.10.2003, 13:42    Titel: |   |  
				| 
 |  
				| So gehts: 
  	  | Code: |  	  | srand((unsigned)time(NULL)); // Beim Start der Anwendung den Zufallsgenerator einmalig initialisieren | 
 
  	  | Code: |  	  | int nCurFigure; nCurFigure = rand()%500; // Eine Zufallszahl zwischen 0 und 499 erzeugen
 | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| HotAcid Super JLI'ler
 
  
 Alter: 44
 Anmeldedatum: 04.08.2002
 Beiträge: 372
 Wohnort: Berlin
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 25.02.2004, 14:24    Titel: |   |  
				| 
 |  
				| Ich habe jetzt folgenden Code: 
 
  	  | Code: |  	  | srand(0)
 double random;
 for(int i=0; i<n; i++)
 {
 random = rand() % 577;
 cout << random << endl;
 }
 
 | 
 das liefert innerhalb eines Schleifendurchlaufs zwar unterschiedliche Ergebnisse, aber wenn ich diese Gesamte Schleife mehrfach ausführe, entsteht immer wieder dieselbe Reihenfolge... wie kann ich das unterbinden?
 
 danke!
 Felix
 
 [EDIT]timeGetTime dürfte bei mir nichts nutzen, da ich unter LInux arbeite(n muss)[/EDIT]
 
 [EDIT2]Alles klar, habe die Initialisierung mit srand(0)an eine andere Stelle im Programm verlegt. Ist zwar IMHO nicht ganz so elegant, aber läuft[/EDIT2]
 _________________
 StGB §§ 328 Abs. 2 Pkt 3:
 Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Fallen JLI MVP
 
  
  
 Alter: 41
 Anmeldedatum: 08.03.2003
 Beiträge: 2860
 Wohnort: Münster
 Medaillen: 1 (mehr...)
 
 
 | 
			
				|  Verfasst am: 25.02.2004, 16:14    Titel: |   |  
				| 
 |  
				| indem du nicht srand(0); nutzt sondern srand(timeGetTime()); oder ähnliches. _________________
 "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nigs Super JLI'ler
 
 
 
 Anmeldedatum: 19.12.2002
 Beiträge: 359
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 02:19    Titel: |   |  
				| 
 |  
				| beser is noch  	  | Code: |  	  | srand(GetTickCount()); | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Fallen JLI MVP
 
  
  
 Alter: 41
 Anmeldedatum: 08.03.2003
 Beiträge: 2860
 Wohnort: Münster
 Medaillen: 1 (mehr...)
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 02:21    Titel: |   |  
				| 
 |  
				| Oder so: 
 
  	  | Code: |  	  | srand(GetTickCount() + rand()%100000);
 
 | 
 _________________
 "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nigs Super JLI'ler
 
 
 
 Anmeldedatum: 19.12.2002
 Beiträge: 359
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 02:25    Titel: |   |  
				| 
 |  
				| ja, das geht auch...... |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Fallen JLI MVP
 
  
  
 Alter: 41
 Anmeldedatum: 08.03.2003
 Beiträge: 2860
 Wohnort: Münster
 Medaillen: 1 (mehr...)
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 02:27    Titel: |   |  
				| 
 |  
				| Das soll angeblich schon Patentiert sein. tststs diese Amis  _________________
 "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mazze JLI'ler
 
 
 Alter: 40
 Anmeldedatum: 02.01.2004
 Beiträge: 145
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 11:51    Titel: |   |  
				| 
 |  
				|  	  | FallenAngel84 hat Folgendes geschrieben: |  	  | Das soll angeblich schon Patentiert sein. tststs diese Amis  | 
 
 gut das die Logikpatente hier noch nicht gültig sind
    |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| HotAcid Super JLI'ler
 
  
 Alter: 44
 Anmeldedatum: 04.08.2002
 Beiträge: 372
 Wohnort: Berlin
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 12:31    Titel: |   |  
				| 
 |  
				| und welche include-Datei brauche ich für GetTickCount()? habe schon <stdlib.h> und <ctime> probiert, kennt er aber immer noch nicht 
 cu Felix
 _________________
 StGB §§ 328 Abs. 2 Pkt 3:
 Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nigs Super JLI'ler
 
 
 
 Anmeldedatum: 19.12.2002
 Beiträge: 359
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.02.2004, 17:56    Titel: |   |  
				| 
 |  
				| ich zitier ausm buch : "Wenn sie die Funktion timeGetTime verwenden, müssen sie die header-datei mmsystem.h (......) und zusätzlich die Bibliothek winmm.lib hinzufügen."ich denke das man für timeGetTime keine anderen Libs+Headers wie für GetTickCount braucht.... |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |