void MakeRandom(int seed) { var psoRender = randomPreset.GetComponent <PSORender>(); var rnd = new System.Random(seed); randomPreset.seed = (int)DateTime.UtcNow.Ticks; int p = rnd.Range(0, 100); if (p < 50) { randomPreset.problem = PSOConfig.Problem.PerlinLandscape; randomPreset.perlinOctaves = rnd.Range(4, 10); randomPreset.perlinAmplitude = rnd.Range(15.0f, 25.0f); randomPreset.perlinFrequency.x = rnd.Range(0.02f, 0.1f); randomPreset.perlinFrequency.y = randomPreset.perlinFrequency.x * rnd.Gaussian(1.0f, 0.1f); randomPreset.perlinAmplitudePerOctave = rnd.Gaussian(0.5f, 0.1f); randomPreset.perlinFrequencyPerOctave = rnd.Gaussian(2.0f, 0.5f); randomPreset.perlinOffset.x = rnd.Range(-1000.0f, 1000.0f); randomPreset.perlinOffset.y = rnd.Range(-1000.0f, 1000.0f); psoRender.materialOverride = materialsLandscape[rnd.Range(0, materialsLandscape.Length)]; psoRender.yScale = 1.0f; } else { if (p < 75) { randomPreset.problem = PSOConfig.Problem.ImageSaturation; } else { randomPreset.problem = PSOConfig.Problem.ImageValue; } randomPreset.image = images[rnd.Range(0, images.Length)]; randomPreset.invertImage = true; psoRender.yScale = -rnd.Gaussian(20.0f, 4.0f); psoRender.materialOverride = materialsImage[rnd.Range(0, materialsImage.Length)]; } psoRender.fogOfFunction = (rnd.Range(0, 100) < 50); }
protected override void FillTexture(Color[] colors) { var rnd = new System.Random(seed); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int index = y * width + x; float r; if (gaussian) { r = Mathf.Clamp01(rnd.Gaussian(mean, stdDev / 0.3f)); } else { r = rnd.Range(0.0f, 1.0f); } colors[index] = new Color(r, r, r, 1); } } }
public static int Gaussian(this System.Random gen, int mean, int stdDev) { return((int)gen.Gaussian((float)mean, (float)stdDev)); }