Springen naar inhoud

Random generator in C#


  • Log in om te kunnen reageren

#1

Redmess

    Redmess


  • >100 berichten
  • 185 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2009 - 00:27

Ik was een stukje code aan het bekijken waarin een dobbelsteen op twee manieren gegooid word die in theorie identiek zou moeten zijn:

using System;
namespace dobbelstenen
{
	/// <summary>
	/// Dobbelstenen spel met meerdere dobbelstenen
	/// Sytse Durkstra 29/10/2008
	/// </summary>
	class dobbelstenen
	{
		static void Main(string[] args)
		{
			int diceComplex;
			int diceSimple;
			int counterComplex = 0;
			int counterSimple = 0;
			int worpComplex;
			int worpSimple;
			int totalComplex = 0;
			int totalSimple = 0;
			double rawComplex;
			double gemiddeldeComplex;
			double gemiddeldeSimple;

			Console.WriteLine("Hoe vaak moet de dobbelsteen gooien (complex)? ");
			diceComplex = Convert.ToInt32(Console.ReadLine());

			Random generator = new Random();

			while (counterComplex < diceComplex)
			{
				rawComplex = generator.NextDouble();
				worpComplex = (int)(generator.NextDouble() * 6) + 1;
				Console.WriteLine("volgende worp: {0}", worpComplex);
				counterComplex++;
				totalComplex += worpComplex;
			}

			Console.WriteLine("Totaal is {0}", totalComplex);
			gemiddeldeComplex = Convert.ToDouble(totalComplex) / Convert.ToDouble(diceComplex);
			Console.WriteLine("Gemiddelde is {0}", gemiddeldeComplex);

			Console.WriteLine();
			Console.WriteLine("Hoe vaak moet de dobbelsteen gooien (simpel)? ");
			diceSimple = Convert.ToInt32(Console.ReadLine());

			while (counterSimple < diceSimple)
			{
				worpSimple = generator.Next(1, 6);
				Console.WriteLine("volgende worp: {0}", worpSimple);
				counterSimple++;
				totalSimple += worpSimple;
			}

			Console.WriteLine("Totaal is {0}", totalSimple);
			gemiddeldeSimple = Convert.ToDouble(totalSimple) / Convert.ToDouble(diceSimple);
			Console.WriteLine("Gemiddelde is {0}", gemiddeldeSimple);

			Console.WriteLine();
			Console.WriteLine();
			Console.WriteLine("Druk Enter om af te sluiten");
			Console.ReadLine();

		}//end main
	}//end class
}//end namespace
Dit programma gooit dus een dobbelsteen een x aantal keren volgens twee methoden, en geeft het gemiddelde van het totaal aantal worpen weer. Voor een dobbelsteen zou dit gemiddelde bij hoge aantallen worpen 3,5 moeten benaderen. De eerste (complexe) methode doet dit, maar de tweede benaderd 3,0.

Ik vermoed dat dit met de werking van de random generator heeft te maken. Hoe komt dit verschil? En hoe werkt zo'n generator dan?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Redmess

    Redmess


  • >100 berichten
  • 185 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2009 - 10:39

De gebruikte code is C#, en het is een console applicatie.

#3

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 25 augustus 2009 - 14:37

http://msdn.microsof...y/2dx6wyd4.aspx

De bovenwaarde is exclusief, terwijl de onderwaarde inclusief is.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#4

Redmess

    Redmess


  • >100 berichten
  • 185 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2009 - 15:15

Ah, vandaar. Bedankt.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures