Merhaba ben C# ile rasgele sayı üreten bazı sorunlar yaşıyorum Şimdi bu işleve sahibim.Rastgele karşılaşma o kadar rasgele değil
public Color getRandomColor()
{
Color1 = new Random().Next(new Random().Next(0, 100), new Random().Next(200, 255));
Color2 = new Random().Next(new Random().Next(0, 100), new Random().Next(200, 255));
Color3 = new Random().Next(new Random().Next(0, 100), new Random().Next(200, 255));
Color color = Color.FromArgb(Color1, Color2, Color3);
Console.WriteLine("R: " + Color1 + " G: " + Color2 + " B: " + Color3 + " = " + color.Name);
return color;
}
Şimdi() orada ben aynı örneği hatası olabilir olasılığını ayıklamak istiyorum, çünkü, yani yeni Random ALOT olduğunu fark edebilirsiniz.
Şimdi bu işlevi 8 kez, birkaç kez çalıştırıyorum. Şimdi burada çıkışlar.
R: 65 G: 65 B: 65 = ff414141
R: 242 G: 242 B: 242 = fff2f2f2
R: 205 G: 205 B: 205 = ffcdcdcd
R: 40 G: 40 B: 40 = ff282828
R: 249 G: 249 B: 249 = fff9f9f9
R: 249 G: 249 B: 249 = fff9f9f9
R: 94 G: 94 B: 94 = ff5e5e5e
R: 186 G: 186 B: 186 = ffbababa
R: 142 G: 142 B: 142 = ff8e8e8e
R: 190 G: 190 B: 190 = ffbebebe
R: 19 G: 19 B: 19 = ff131313
R: 119 G: 119 B: 119 = ff777777
R: 119 G: 119 B: 119 = ff777777
R: 75 G: 75 B: 75 = ff4b4b4b
R: 169 G: 169 B: 169 = ffa9a9a9
R: 127 G: 127 B: 127 = ff7f7f7f
R: 73 G: 73 B: 73 = ff494949
R: 27 G: 27 B: 27 = ff1b1b1b
R: 125 G: 125 B: 125 = ff7d7d7d
R: 212 G: 212 B: 212 = ffd4d4d4
R: 174 G: 174 B: 174 = ffaeaeae
R: 0 G: 0 B: 0 = ff000000
R: 0 G: 0 B: 0 = ff000000
R: 220 G: 220 B: 220 = ffdcdcdc
bu yine çok tesadüfi değildir görebiliyorum ama neden bu olur doz gibi? ve buna nasıl karşı koyabilirim?
Aynı sorun normalleştirilmiş bir aralıkta rastgele renkler üretiyordu. Bir tohum sağlamadan hızlı bir yol, aynı rastgele akışı kullanarak birlikte bir çift değere izin vermektir. Kesinlik eksikliği, ancak biraz daha çeşitli rasgele dağıtım elde etmek için kullanılabilir. E.g. int x = rng.Next()^rng.Next(); int magnitude = x * x; float değeri = x/(float) büyüklüğü; –
Bu yöntemi kullanarak, aşağıdakiler ile biraz daha iyi bir renk dağılımı oluşturabilirsiniz. Renk = renk = yeni Renk ( (bayt) (rand.Next (0, 255)^rand.Next (0, 255)), (bayt) (rand.Next (0, 255)^rand.Next (0, 255)), (bayt) (rand.Next (0, 255)^rand.Next (0, 255)), (bayt) (rand.Next (0, 255)^rand.Next (0 , 255))) –