blob: 924fb2cd228e7eeda193c876f31e580e9e1266a3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include "PatternRandom.hpp"
const float DISTRIBUTION_DEV = 2.0;
PatternRandom::PatternRandom(std::uint8_t cols, std::uint8_t rows, float density) :
PatternSet(cols, rows),
m_distributionX(cols / 2.0, cols / DISTRIBUTION_DEV),
m_distributionY(rows / 2.0, rows / DISTRIBUTION_DEV)
{
std::uint32_t numCellsApprox = static_cast<std::uint32_t>(density * cols * rows);
for (std::uint32_t i = 0; i < numCellsApprox; ++i)
{
std::uint8_t randX = std::clamp(static_cast<std::uint8_t>(m_distributionX(m_generator)), static_cast<std::uint8_t>(0), cols);
std::uint8_t randY = std::clamp(static_cast<std::uint8_t>(m_distributionY(m_generator)), static_cast<std::uint8_t>(0), rows);
m_aliveCells.insert(std::pair<std::uint8_t, std::uint8_t>(randX, randY));
}
}
|