Mr Speicher
Neu angemeldet
- Registriert
- 22 Dez. 2013
- Beiträge
- 83
Hallo, ich habe ein kleines Programm geschrieben mit dem per Zufall der Geburtstag erstellt wird sprich Tag, Monat, Jahr. Diese Methode befindet sich in einer eigenen Klasse und ich greife in Program über eine Instanz auf die Methode zu.
Mit einer While-Schleife lässt sich festlegen wie viele Zufallswerte generiert und ausgegeben werden sollen.
Das Problem ist aber, dass die Zufallswerte über die Instanz nicht richtig funktionieren, es kommen fast immer die selben Werte dabei heraus.
Hier ein Beispiel bei 20 Zufallsdurchgängen:
Müsste für jeden Durchgang nun eine neue Instanz erstellt werden damit es mit den Zufallszahlen klappt oder liegt der Fehler noch woanders ?
Hier ist mal der Code:
Program.cs
Class1.cs
Mit einer While-Schleife lässt sich festlegen wie viele Zufallswerte generiert und ausgegeben werden sollen.
Das Problem ist aber, dass die Zufallswerte über die Instanz nicht richtig funktionieren, es kommen fast immer die selben Werte dabei heraus.
Hier ein Beispiel bei 20 Zufallsdurchgängen:
Müsste für jeden Durchgang nun eine neue Instanz erstellt werden damit es mit den Zufallszahlen klappt oder liegt der Fehler noch woanders ?
Hier ist mal der Code:
Program.cs
[src=csharp]namespace Test_2
{
class Program
{
static void Main(string[] args)
{
int anzahlDurchGaenge, hochZaehlen=0;
Console.Write("Anzahl Durchgänge eingeben: ");
anzahlDurchGaenge = Convert.ToInt32(Console.ReadLine());
Class1 aufruf = new Class1();
while (anzahlDurchGaenge >=hochZaehlen)
{
aufruf.zufallsWertGeburtstag();
hochZaehlen++;
}
Console.ReadLine();
}
}
}[/src]
{
class Program
{
static void Main(string[] args)
{
int anzahlDurchGaenge, hochZaehlen=0;
Console.Write("Anzahl Durchgänge eingeben: ");
anzahlDurchGaenge = Convert.ToInt32(Console.ReadLine());
Class1 aufruf = new Class1();
while (anzahlDurchGaenge >=hochZaehlen)
{
aufruf.zufallsWertGeburtstag();
hochZaehlen++;
}
Console.ReadLine();
}
}
}[/src]
Class1.cs
[src=csharp]namespace Test_2
{
class Class1
{
int tag, monat, jahr, personenAlter;
public void zufallsWertGeburtstag()
{
Random roundGB = new Random();
const int MONATALTERSBBERECHNUNG = 8, JAHRALTERSBERECHNUNG = 2015;
// Berechnungsteil für Monat, Tag und Jahr des Geburtstages
monat = roundGB.Next(1, 13);
if (monat == 2)
{
tag = roundGB.Next(1, 29);
}
else
{
tag = roundGB.Next(1, 31);
}
// Jahr berechnet mit Zufallswerten zw. 1950 und 1996
jahr = roundGB.Next(1950, 1997);
// Berechnet das Alter der Person
if (monat > MONATALTERSBBERECHNUNG)
{
personenAlter = JAHRALTERSBERECHNUNG - (jahr - 1);
}
else
{
personenAlter = JAHRALTERSBERECHNUNG - jahr;
}
Console.WriteLine(tag + "." + monat + "." + jahr + " " + personenAlter + " Jahre" + "\n");
}
}
}[/src]
{
class Class1
{
int tag, monat, jahr, personenAlter;
public void zufallsWertGeburtstag()
{
Random roundGB = new Random();
const int MONATALTERSBBERECHNUNG = 8, JAHRALTERSBERECHNUNG = 2015;
// Berechnungsteil für Monat, Tag und Jahr des Geburtstages
monat = roundGB.Next(1, 13);
if (monat == 2)
{
tag = roundGB.Next(1, 29);
}
else
{
tag = roundGB.Next(1, 31);
}
// Jahr berechnet mit Zufallswerten zw. 1950 und 1996
jahr = roundGB.Next(1950, 1997);
// Berechnet das Alter der Person
if (monat > MONATALTERSBBERECHNUNG)
{
personenAlter = JAHRALTERSBERECHNUNG - (jahr - 1);
}
else
{
personenAlter = JAHRALTERSBERECHNUNG - jahr;
}
Console.WriteLine(tag + "." + monat + "." + jahr + " " + personenAlter + " Jahre" + "\n");
}
}
}[/src]