#1
24.04.2017 um 15:30 UhrHallo Rubbelos,
da Dein Rechenergebnis wesentlich von dem der anderen Lösungen abweicht, habe ich mir Deinen Code etwas genauer angesehen.
Check einmal bitte dieses (die auskommentierten Zeilen wurden durch mich mit der darunter liegenden Zeile ersetzt, außerdem habe ich noch eine Wiederholungsschleife (while (!bo_exit)) eingebaut):
da Dein Rechenergebnis wesentlich von dem der anderen Lösungen abweicht, habe ich mir Deinen Code etwas genauer angesehen.
Check einmal bitte dieses (die auskommentierten Zeilen wurden durch mich mit der darunter liegenden Zeile ersetzt, außerdem habe ich noch eine Wiederholungsschleife (while (!bo_exit)) eingebaut):
C#-Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Drunk { class Program { static void Main(string[] args) { Random Step = new Random(); bool bo_exit = false; while (!bo_exit) { HashSet<int> Count = new HashSet<int>(); WalkingGenerator DrunkMan = new WalkingGenerator(); //int Position = 3; int Position = 7; int number = 0; //Console.WriteLine("Wieviel Durchläufe?"); //int Calcnumber = Convert.ToInt32(Console.ReadLine()); int Calcnumber = 100000; Console.WriteLine("Calculating"); for (int j = 0; j < Calcnumber; j++) { while (DrunkMan.Check(Position)) { DrunkMan.Walk(ref Position, Step.Next(0, 8)); //if (Position > 69) if (Position > 260) { Count.Add(number); number += 1; break; } } //Position = 3; Position = 7; } float rate = (float)Count.Count / (Calcnumber / 100); Console.WriteLine("{1} {2} Der Man hat eine Chance durchzukommen von {0}%", rate, Count.Count, Calcnumber); Console.WriteLine("again? exit ESC"); ConsoleKeyInfo ki = Console.ReadKey(true); bo_exit = ki.Key == ConsoleKey.Escape; } //Console.ReadLine(); } } class WalkingGenerator { public void Walk(ref int Coord, int Step) { switch (Step) { case 1: Coord -= 1; break; case 2: Coord += 1; break; case 3: //Coord += 7; Coord += 13; break; case 4: //Coord -= 7; Coord -= 13; break; case 5: //Coord += 6; Coord += 14; break; case 6: //Coord -= 6; Coord -= 14; break; case 7: //Coord += 8; Coord += 12; break; case 0: //Coord -= 8; Coord -= 12; break; } } public bool Check(int Coord) { //if (Coord % 7 == 0 || Coord % 7 == 6 || Coord <= 0 || Coord >= 69) if (Coord % 13 == 0 || Coord % 13 == 1 || Coord < 1 || Coord > 260) { return false; } else { return true; } } } }