Не знаю, как еще объяснить это, поэтому заголовок в значительной степени описывает проблему.
Случайное не переустанавливается каждую часть цикла. Это статический член класса, который я всегда вызываю из других классов.
Я не использую пользовательское семя.
Код инициализации:
public static Random random = new Random();
for (int x = 0; x < 75; x++)
{
if (main.random.Next(11) == 1)
{
tiles[heightMap[x] - 1][x] = 4;
tiles[heightMap[x] - 2][x] = 4;
tiles[heightMap[x] - 3][x] = 4;
tiles[heightMap[x] - 4][x] = 4;
tiles[heightMap[x] - 5][x] = 4;
tiles[heightMap[x] - 5][x - 1] = 5;
tiles[heightMap[x] - 6][x - 1] = 5;
tiles[heightMap[x] - 6][x] = 5;
tiles[heightMap[x] - 5][x + 1] = 5;
tiles[heightMap[x] - 6][x + 1] = 5;
}
}
Это (я знаю, что это не отличный способ - он рудиментарный и временный) генерирует дерево.
Однако мой ландшафт часто выглядит так:
AIR AIR AIR AIR TREE ДЕРЕВО ДЕРЕВО ВОЗДУШНОЕ ВОЗДУШНОЕ ДЕРЕВО ДЕРЕВО ВОЗДУШНОЕ ВОЗДУШНОЕ ВОЗДУШНОЕ ВОЗДУШНОЕ ДЕРЕВО ДРЕВЕСИНА
То есть, кажется, он получает скопления многих деревьев за раз.
Кто-нибудь может понять, почему это происходит? Есть ли лучшая альтернатива, чем использование класса System.Security.Cryptography.Random(так как это медленнее, и это игра не требует криптографической защиты - я хочу, чтобы она имела очень быструю скорость загрузки)
Я ожидал бы в среднем 9 разрывов за дерево, но это больше похоже на 7, а затем 3 дерева тесно сгруппированы вместе.