| ... | ... |
@@ -10,7 +10,7 @@ Features: |
| 10 | 10 |
- Hunt And Kill |
| 11 | 11 |
- Handles mazes of any size |
| 12 | 12 |
- Random with seed (time in seconds since the epoch by default) |
| 13 |
- - Fairly fast (10000*10000 cells in ~1100ms) |
|
| 13 |
+ - Fairly fast (10000*10000 cells in ~900ms) |
|
| 14 | 14 |
|
| 15 | 15 |
[`cxx-maze`]: https://git.rcrnstn.net/rcrnstn/cxx-maze |
| 16 | 16 |
|
| ... | ... |
@@ -19,7 +19,7 @@ Features: |
| 19 | 19 |
``` |
| 20 | 20 |
$ make |
| 21 | 21 |
$ ./maze dummy |
| 22 |
-1154ms |
|
| 22 |
+885ms |
|
| 23 | 23 |
$ ./maze |
| 24 | 24 |
██ ████████████████████████████████████████████████████████████████████████████ |
| 25 | 25 |
██ ██ ██ ██ ██ ██ ████ |
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
#include <chrono> |
| 2 |
-#include <cstdlib> |
|
| 3 | 2 |
#include <iostream> |
| 3 |
+#include <random> |
|
| 4 | 4 |
#include <sstream> |
| 5 | 5 |
#include <thread> |
| 6 | 6 |
#include <vector> |
| ... | ... |
@@ -51,7 +51,7 @@ template<typename C = void(*)(Maze &)> |
| 51 | 51 |
Maze hunt_and_kill(int w, int h, unsigned seed, C callback = [](Maze &){})
|
| 52 | 52 |
{
|
| 53 | 53 |
auto maze = Maze(w, h, Maze::WALL); |
| 54 |
- std::srand(seed); |
|
| 54 |
+ auto rand = std::default_random_engine(seed); |
|
| 55 | 55 |
// Entrance. |
| 56 | 56 |
maze(1, 0) = maze(1, 1) = Maze::PATH; |
| 57 | 57 |
// Interior. |
| ... | ... |
@@ -79,7 +79,7 @@ Maze hunt_and_kill(int w, int h, unsigned seed, C callback = [](Maze &){})
|
| 79 | 79 |
// If we have neighbors, carve path to random one. |
| 80 | 80 |
if (n != 0) |
| 81 | 81 |
{
|
| 82 |
- n = std::rand() % n; |
|
| 82 |
+ n = (int)rand() % n; |
|
| 83 | 83 |
FOR_NEIGHBOR( |
| 84 | 84 |
if (maze(cx+nx, cy+ny) == Maze::WALL && n-- == 0) |
| 85 | 85 |
{
|