private char NextConsonant() { char[] consonants = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z' }; return(lehmer.NextChoice(consonants)); }
public Star(LehmerPRNG lehmer) { this.lehmer = lehmer; this.Name = GenerateName(); var type = lehmer.NextChoice(starTypes, starTypes.Select(st => st.Prevalence)); this.TypeOfStar = type.Type; this.Radius = lehmer.NextDouble(type.MinRadius, type.MaxRadius); var hasPlanets = lehmer.NextBool(CHANCE_OF_PLANETS); if (!hasPlanets) { return; } Planets = new List <Planet>(); var numPlanets = lehmer.NextInt(1, 10); var currentDisanceInAU = lehmer.NextDouble(0.5, 4); for (int i = 0; i < numPlanets; i++) { Planets.Add(new Planet(lehmer, currentDisanceInAU)); currentDisanceInAU += lehmer.NextDouble(0.5, 1.5) * (i + 1) * 0.5; } }
public Planet(LehmerPRNG lehmer, double distanceFromStar) { this.lehmer = lehmer; DistanceFromStar = distanceFromStar; HasRings = lehmer.NextBool(RING_CHANCE); var candidates = planetTypes.Where(pt => pt.MaxDistance >= distanceFromStar && pt.MinDistance <= distanceFromStar); var planetType = lehmer.NextChoice(candidates); Type = planetType.Type; Radius = lehmer.NextDouble(planetType.MinRadius, planetType.MaxRadius); var hasMoons = lehmer.NextBool(MOON_CHANCE); if (!hasMoons) { return; } Moons = new List <Moon>(); var numMoons = lehmer.NextInt(1, 4); var currentDisanceInPU = lehmer.NextDouble(0.5, 4); for (int i = 0; i < numMoons; i++) { Moons.Add(new Moon(lehmer, currentDisanceInPU, Radius)); currentDisanceInPU += lehmer.NextDouble(0.5, 1.5) * (i + 1) * 0.5; } }