Cplusplus – die neusten Beiträge

C++: Eigener "Zufallsgenerator"?

Achtung Anfänger am Werk:

Ich habe versucht einen eigenen "Zufallsgenerator" zu schreiben, dafür habe ich folgenden Code benutzt:

long time();
long random(long max, long seed = time());

//zählt welche Zahl bei 100 generierten Zufallszahlen wie oft vorkommt
int main() {...}

//liefert die aktuelle Zeit
long time() {...}

long random(long max, long seed) {
    
    return seed%max;
}

Wie zu erwarten waren die Ergebnisse zwar irgendwie zufällig jedoch nicht gleichmäßig verteilt, hier eine Beispielausgabe :

Zahl 0: 0 mal | Zahl 1: 63 mal | Zahl 2: 37 mal | Zahl 3: 0 mal | Zahl 4: 0 mal

Danach wollte ich aber aus reiner Interesse wissen welcher Seed denn jeweils übermittelt wird und habe dem Code nur eine Zeile hinzugefügt:

long time();
long random(long max, long seed = time());

//zählt welche Zahl bei 100 generierten Zufallszahlen wie oft vorkommt
int main() {...}

//liefert die aktuelle Zeit
long time() {...}

long random(long max, long seed) {
    
    std::cout << seed << std::endl;

    return seed%max;
}

Und mit Verwunderung musste ich feststellen, dass die Werte nun relativ gleichmäßig verteilt ausgegeben wurden (nach den einzelnen Seeds natürlich), eine Beispielausgabe:

Zahl 0: 19 | Zahl 1: 24 | Zahl 2: 18 | Zahl 3: 20 | Zahl 4: 19

  • Warum sind die Werte beim 2. Codebeispiel gleichmäßiger verteilt?
  • Kann ich es irgendwie hinbekommen dass die Werte so verteilt sind wie im 2. Codebeispiel, ohne dabei etwas in der Konsole ausgeben zu müssen?

PS. Ich dachte dass die bessere Verteilung im 2. Codebeispiel möglicherweise damit zusammenhängt, dass der cout-Befehl eine gewisse Zeit beansprucht, und somit die Seeds indirekt beeinflusst. Deshalb habe ich versucht an der selben Stelle wo im 2. Beispiel der cout-Befehl steht eine kurze Wartezeit einzubauen, jedoch war das Ergebnis ähnlich wie beim 1. Beispiel.

programmieren, Cplusplus, zufallsgenerator

C++ "nicht deklarierter Bezeichner"?

Hallo, Habe letztens mal ein Programm zur annähernden Berechnung von Pi geschrieben:

include include include include include include include

using namespace std;

int main() {

long double U; // = Umfang 
    long double GK; // = Gegenkathete 
    long double a; // = Winkel Alpha in Grad 
    long double AK=1; // = Ankathete 
    long double H; // = Hypotenuse 
    long double n; // = Anzahl Ecken des Vielecks 
long double b; // =zweiter Winkel
long double piAK; // =Verhältnis Umfang zu Ankathete
long double piH; // =Verhältnis Umfang zu Hypotenuse
long double pi; // =Näherungswert für pi

cout << "Wie häufig soll die Operation durchgeführt werden?" << endl;
cin >> n;
U=tan(180/n)*AK*2*n;
b=(n-2)*180*(1/n);
H=(b/2)*(1/cos(b));
piAK=U/AK;
piH=U/H;
pi=(piH+piAK)/2;
cout << piAK << endl;
cout << piH << endl;
cout << pi << endl;
cin.get();
return 0;

}

Wenn ich jetzt aber das Programm kompilieren will, bekomme ich folgende Fehlermeldungen:

1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(23): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(24): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(24): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(25): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(26): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'pi': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(28): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(29): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(30): error C2065: 'pi': nichtdeklarierter Bezeichner ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Normalerweise würde ich jetzt sagen, dass der Schlamassel an einer Variabel liegt, die verwendet wird, ohne initialisiert worden zu sein, allerdings ist in diesem Code keine solche Variabel. Weiß einer, wie ich das hier fixen kann?

Fehler, programmieren, Cplusplus, Error

Meistgelesene Beiträge zum Thema Cplusplus