public RandomDrift(RandomBase randomX, RandomBase randomY) { _priority = -3; Massless = true; RandomX = randomX; RandomY = randomY; }
static void Main(string[] args) { Intro(); //Generate integer sequence, may be negative Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( -{RangeMax} to {RangeMax} ):"); var randomBase = new RandomBase(); var randomNumbers = randomBase.GetNumberSequence(NumberOfSamples, RangeMax); PrintSequence <int>(randomNumbers); //Generate positive number sequence Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( 0 to {RangeMax} ):"); randomNumbers = randomBase.GetSignedNumberSequence(NumberOfSamples, 100, true); PrintSequence <int>(randomNumbers); //Generate negative number sequence Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( -1{RangeMax} to 0 ):"); randomNumbers = randomBase.GetSignedNumberSequence(NumberOfSamples, 100, false); PrintSequence <int>(randomNumbers); //Get random strings of random length Console.WriteLine($"\n\nGenerating {NumberOfSamples} random strings:"); var strSample = new StringSample(); var randomStrings = strSample.GetRandomStrings(5); PrintSequence <string>(randomStrings); Console.WriteLine($"\nDone...\n"); Signature(); }
/// <summary> /// Der abstrakte Insekt-Basiskonstruktor. /// </summary> /// <param name="colony">Das Volk zu dem das neue Insekt gehört.</param> /// <param name="vorhandeneInsekten">Hier unbenutzt!</param> internal virtual void Init(CoreColony colony, Random random, Dictionary <string, int> vorhandeneInsekten) { id = neueId; neueId++; this.colony = colony; this.RandomBase = random; koordinate.Richtung = RandomBase.Next(0, 359); // Zufällig auf dem Spielfeldrand platzieren. if (colony.AntHills.Count == 0) // Am oberen oder unteren Rand platzieren. { if (RandomBase.Next(2) == 0) { koordinate.X = RandomBase.Next(0, colony.Playground.Width); koordinate.X *= SimulationEnvironment.PLAYGROUND_UNIT; if (RandomBase.Next(2) == 0) { koordinate.Y = 0; } else { koordinate.Y = colony.Playground.Height * SimulationEnvironment.PLAYGROUND_UNIT; } } // Am linken oder rechten Rand platzieren. else { if (RandomBase.Next(2) == 0) { koordinate.X = 0; } else { koordinate.X = colony.Playground.Width * SimulationEnvironment.PLAYGROUND_UNIT; } koordinate.Y = RandomBase.Next(0, colony.Playground.Height); koordinate.Y *= SimulationEnvironment.PLAYGROUND_UNIT; } } // In einem zufälligen Bau platzieren. else { int i = RandomBase.Next(colony.AntHills.Count); koordinate.X = colony.AntHills[i].CoordinateBase.X + SimulationEnvironment.Cosinus( colony.AntHills[i].CoordinateBase.Radius, koordinate.Richtung); koordinate.Y = colony.AntHills[i].CoordinateBase.Y + SimulationEnvironment.Sinus( colony.AntHills[i].CoordinateBase.Radius, koordinate.Richtung); } }
public RectZone(float x, float y, float width, float height, RandomBase randomX, RandomBase randomY) { if (randomX == null) { randomX = new UniformRandom(); } if (randomY == null) { randomY = new UniformRandom(); } _x = x; _y = y; RandomX = randomX; RandomY = randomY; Width = width; Height = height; }
/// <summary> /// Berechnet die Bewegung des Insekts. /// </summary> internal void Bewegen() { reached = false; // Insekt dreht sich. if (restWinkel != 0) { // Zielwinkel wird erreicht. if (Math.Abs(restWinkel) < colony.Drehgeschwindigkeit[CasteIndexBase]) { koordinate.Richtung += restWinkel; restWinkel = 0; } // Insekt dreht sich nach rechts. else if (restWinkel >= colony.Drehgeschwindigkeit[CasteIndexBase]) { koordinate.Richtung += colony.Drehgeschwindigkeit[CasteIndexBase]; RestWinkelBase -= colony.Drehgeschwindigkeit[CasteIndexBase]; } // Insekt dreht sich nach links. else if (restWinkel <= -colony.Drehgeschwindigkeit[CasteIndexBase]) { koordinate.Richtung -= colony.Drehgeschwindigkeit[CasteIndexBase]; RestWinkelBase += colony.Drehgeschwindigkeit[CasteIndexBase]; } } // Insekt geht. else if (restStreckeI > 0) { if (GetragenesObstBase == null) { int strecke = Math.Min(restStreckeI, aktuelleGeschwindigkeitI); restStreckeI -= strecke; zurückgelegteStreckeI += strecke; koordinate.X += SimulationEnvironment.Cos[strecke, koordinate.Richtung]; koordinate.Y += SimulationEnvironment.Sin[strecke, koordinate.Richtung]; } } // Insekt geht auf Ziel zu. else if (ziel != null) { int entfernungI; if (ZielBase is CoreMarker) { entfernungI = CoreCoordinate.BestimmeEntfernungDerMittelpunkteI(koordinate, ziel.CoordinateBase); } else { entfernungI = CoreCoordinate.BestimmeEntfernungI(koordinate, ziel.CoordinateBase); } reached = entfernungI <= SimulationEnvironment.PLAYGROUND_UNIT; if (!reached) { int richtung = CoreCoordinate.BestimmeRichtung(koordinate, ziel.CoordinateBase); // Ziel ist in Sichtweite oder Insekt trägt Obst. if (entfernungI < colony.SichtweiteI[CasteIndexBase] || getragenesObst != null) { restStreckeI = entfernungI; } // Ansonsten Richtung verfälschen. else { richtung += RandomBase.Next(-18, 18); restStreckeI = colony.SichtweiteI[CasteIndexBase]; } dreheInRichtung(richtung); } } // Koordinaten links begrenzen. if (koordinate.X < 0) { koordinate.X = -koordinate.X; if (koordinate.Richtung > 90 && koordinate.Richtung <= 180) { koordinate.Richtung = 180 - koordinate.Richtung; } else if (koordinate.Richtung > 180 && koordinate.Richtung < 270) { koordinate.Richtung = 540 - koordinate.Richtung; } } // Koordinaten rechts begrenzen. else if (koordinate.X > colony.BreiteI) { koordinate.X = colony.BreiteI2 - koordinate.X; if (koordinate.Richtung >= 0 && koordinate.Richtung < 90) { koordinate.Richtung = 180 - koordinate.Richtung; } else if (koordinate.Richtung > 270 && koordinate.Richtung < 360) { koordinate.Richtung = 540 - koordinate.Richtung; } } // Koordinaten oben begrenzen. if (koordinate.Y < 0) { koordinate.Y = -koordinate.Y; if (koordinate.Richtung > 180 && koordinate.Richtung < 360) { koordinate.Richtung = 360 - koordinate.Richtung; } } // Koordinaten unten begrenzen. else if (koordinate.Y > colony.HöheI) { koordinate.Y = colony.HöheI2 - koordinate.Y; if (koordinate.Richtung > 0 && koordinate.Richtung < 180) { koordinate.Richtung = 360 - koordinate.Richtung; } } }
static RandomBase_UnitTest() { RandomBase_ = new RandomBase(); }
public Life(RandomBase random) { Random = random; }
public NormalDrift(float max, RandomBase random) { Massless = true; Random = random; }
public Rotation(RandomBase random) { Random = random; }
public Scale(RandomBase random) { Random = random; }
public Alpha(RandomBase random) { Random = random; }
public SteadyClock(float ticksPerCall = 1, RandomBase initialDelay = null) { TicksPerCall = ticksPerCall; InitialDelay = _initialDelay == null ? new UniformRandom(0, 0) : _initialDelay; currentTime = 0; }
/// <summary> /// テスト処理前の初期化を実行します /// </summary> private void Initialize() { m_Random = CreateRandomBase(); Console.WriteLine("Randmizerクラス : {0} のテストを開始します", m_Random.GetType().FullName); }
public Mass(RandomBase random) { Random = random; }
public Omega(RandomBase random) { Random = random; }