Percolation/Mean cluster density: Difference between revisions
m
Made code more C++ idiomatic.
m (Minor formatting.) |
m (Made code more C++ idiomatic.) |
||
Line 224:
#include <string>
#include <vector>
#include <iomanip>
std::random_device random;
Line 245 ⟶ 246:
void display() const {
for ( uint64_t row = 0; row < grid.size();
for ( uint64_t col = 0; col < grid.size();
uint64_t value = grid[row][col];
char ch = ( value < GRID_CHARACTERS.length() ) ? GRID_CHARACTERS[value] : '?';
Line 257 ⟶ 258:
void count_clusters() {
clusters = 0;
for ( uint64_t row = 0; row < grid.size();
for ( uint64_t col = 0; col < grid.size();
if ( grid[row][col] == CLUSTERED ) {
clusters += 1;
Line 285 ⟶ 286:
void create_grid(int32_t grid_size, double probability) {
grid.assign(grid_size, std::vector<int32_t>(grid_size, 0));
for ( int32_t row = 0; row < grid_size;
for ( int32_t col = 0; col < grid_size;
if ( distribution(generator) < probability ) {
grid[row][col] = CLUSTERED;
Line 307 ⟶ 308:
Grid grid(size, probability);
std::cout << "This " << size << " by " << size << " grid contains "
grid.display();
std::vector<int32_t>
for ( int32_t
double sumDensity = 0.0;
for ( int32_t test = 0; test < test_count; test++ ) {
Grid grid(
sumDensity += grid.cluster_density();
}
double result = sumDensity / test_count;
std::cout << " n = " << std::setw(5) << grid_size
<< ", simulations K = " << std::fixed << result << std::endl;
}
}
|