C++ Zufallsgenerator

abdi-61

Lieutenant
Registriert
Okt. 2011
Beiträge
519
Hi,

auf der suche nach einem zufallsgenerator in c++ bin ich auf diesen gestosen

PHP:
 #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>

  void main(void)
  {
    int i;
    time_t t;

    time(&t);
    srand((unsigned int)t);              /* Zufallsgenerator initialisieren */

        printf("%d ", rand() % 6 + 1);     /* Wuerfeln */
    printf("\n");
	system("pause");
	
  }

doch der compiler braucht bis zu 5 minuten um 1 zufallszahl zu generieren.
Mach ich irgendwas falsch ? weil ich hab nen i5 2500k der sollte schon in der lage sein sowas innerhalb sekunden zu berechnen oder etwa nicht ?
im hintergrund läuft nix, also nix besonderes.

danke im vorraus
 
Programmierst du immer mitten in der Nacht?;)

Was für eine Entwicklungsumgebung nutzt du? Zumal, der Compiler berechnet keine Zufallszahlen, er wandelt lediglich denn Code in Maschinensprache. Vielleicht dauert das compilieren so lange. Allerdings auch nur schwer vorstellbar. Also mit welchen Compiler schlägst du dich rum?

PS.: Dieser "Zufallsgenerator" ist der letzte Müll, google mal nach bsp. nach Mersenne-Twister. Ist zwar auch nur ein Pseudo-Zufallsdings, aber um Welten besser. Oder Mother of All... http://www.agner.org/random/
 
Probiere dieses Beispiel mal: http://www.cplusplus.com/reference/cstdlib/rand/.

Und mit den 5 Minuten meinst du wohl eher das Compilen des Codes, nicht aber das generieren der Zahl.
Schon das ganze mit einem anderem Compiler versucht?
Jede CPU schafft es 100te, 1000te, 10000te Zufallszahlen pro Sekunde zu generieren (hängt natürlich auch vom Algorithmus ab).
 
Also ich benutze microsoft visual studio 2010 express

habs jetzt mit dem programm versucht

PHP:
#include <iostream>
#include <ctime>

using namespace std;

int main()
{
	int zahl;
	
	srand((unsigned)time(0));

	zahl = rand()%10+1;

	cout<<zahl<<endl;
	system("PAUSE");

	}


und wie beim anderen code braucht der rechner ne ganze weile bis er dann endlich ne zahl hat, wenn man allerdings noch eine zahl möchte geht es in sekunden schnelle.
aber wenn man nur 1 buschstaben ändert dauert das wieder 2 bis 3 minuten.
 
Also dass es 3 Minuten dauert ist nicht normal, kommt dir vermutlich auch nur so vor, aber das Compilen in C++ dauert schon seine Zeit, das ist normal.

Und das hat rein gar nichts mit der Zahl zu tun, sondern er übersetzt deinen Code in "Maschinensprache", welche die CPU ausführen kann (http://de.wikipedia.org/wiki/Compiler).

Und eine Zahl zu generieren dauert nur ein mini Bruchteil einer Sekunde.
 
ok habs mal mit der stoppuhr gemessen dauert wirklich nur 30-50 sekunden obwohl es mir wie eine ewigkeit vorkommt.


ich danke euch für eure zeit :D

kan geschlossen werden
 
Hm, also mein Netbook (!) (2x 1,6GHz AMD) braucht zum kompilieren eines mehr oder weniger umfangreichen Programms mit GUI auch "nur" 30 Sekunden. Auch Arbeit steht ein Core i5 2400 - der machts in unter 10 Sekunden. Irgendwas stimmt da also nicht...
 
abdi-61, die 30 bis 50s sind offenbar die Zeit zum neu compilieren und starten im Debugmodus. Du solltest mal zwischen der Compile Zeit und der Laufzeit unterscheiden lernen, sonst reden hier weiter alle aneinnander vorbei.
 
Digger, wenn du wüsstest, was ein Compiler ist, wärst du der Lösung deines Probs schon näher :D
 
Werden die Header in C++ nicht anders deklariert? Also stdio.h als <cstdio>?
So ist das doch schlicht C?!
Mit dem Tiny C Compiler ist der Code auf jeden Fall sofort compiliert.
 
Nein, so ist es immer noch nicht ganz C, denn main() ist falsch deklariert.
 
Zurück
Oben