Most mines "tricks" fail because every hidden tile has the same chance of being a mine and the board is fixed before you click; in a provably fair game, you can check that by recomputing the mine positions from the revealed seeds after the round. This guide tests six popular myths, then walks through one common way a hash becomes a set of mine positions.
Six myths, checked
| Myth | What the maths says |
|---|---|
| "Corners are safer." | With random placement, each of the 25 tiles is equally likely to hold a mine. Position carries no information. |
| "After a big win, a mine is due." | Each round's board is generated separately. Past rounds don't change the next board. |
| "Fewer mines is better value." | Every mine count has the same expected return once the edge is applied — see expected value. |
| "Stopping at a set pick count beats the game." | Every cash-out point has the same expected value: stake × (1 − edge). |
| "The game moves mines when you're winning." | In a provably fair game the board is locked by a hash before play; you can check after. In a game with no proof, you can't check at all — that's a reason for caution. |
| "Seeds can be read to predict the board." | You only see a SHA-256 hash of the server seed before play. Reversing it isn't feasible. |
A quick test of "corners are safer"
With 3 mines on 25 tiles, any single tile holds a mine with probability 3/25 = 12%. There are 4 corners, 12 other edge tiles and 9 inner tiles, and each of them is at 12%. In our 300,000-round simulation for the EV guide, tiles were picked at random and survival matched the formula within sampling error — no location effect exists to find.
How a provably fair board is built
A provably fair game commits to its randomness before you play. A typical setup uses three inputs:
- Server seed: a secret chosen by the game. You see only its SHA-256 hash before play.
- Client seed: a value you can set or change.
- Nonce: a counter that goes up by one each round.
After you rotate seeds, the old server seed is revealed. You hash it and check it matches the hash you were shown. Then you recompute the board.
The method below is one common convention for illustration. Games differ in message format, byte handling and shuffling. Always compare with the documentation of the game you're checking.
Worked example: seeds to mine positions
All seeds here are made up for this example. Settings: 3 mines, server seed grid-desk-example-seed-7d41c0, client seed grid-reader-01, nonce 3.
Step 1 — check the commitment.
sha256("grid-desk-example-seed-7d41c0")
= f07f03b130201cdf401db74edeceeabf7f5f7b6a8fc00d9fc7ec4f97fce0a59aIf that matches the hash shown before play, the seed wasn't swapped.
Step 2 — make the random bytes. HMAC-SHA256 with the server seed as the key and client:nonce:round as the message:
HMAC("grid-reader-01:3:0")
= c95f69878de7a402c51065b8cd9988c7f38eaefa50aabe2e403ae2a0e30eb8caStep 3 — turn 4 bytes at a time into a number from 0 to 1. Each byte is divided by 256, 256², 256³ and 256⁴ and added up.
Step 4 — pick tiles without replacement. Number the tiles 0–24, left to right, top to bottom. Multiply each number by how many tiles are still available, round down, and take the tile at that position in the remaining list.
| Mine | Bytes | Number (0–1) | × tiles left | Index | Tile | Row, column |
|---|---|---|---|---|---|---|
| 1 | c95f6987 | 0.786612 | × 25 = 19.6653 | 19 | 19 | 4, 5 |
| 2 | 8de7a402 | 0.554316 | × 24 = 13.3036 | 13 | 13 | 3, 4 |
| 3 | c51065b8 | 0.769781 | × 23 = 17.7050 | 17 | 18 | 4, 4 |
Note the third row: index 17 points to tile 18, because tile 13 was already removed from the list. Picking without replacement means a tile can never be chosen twice.
Because each step is fixed, anyone with the three inputs gets the same board. If you played this fictional round and your history shows a mine somewhere else, the result doesn't match the commitment and you should raise it with the site.
Why the client seed and nonce matter
The server seed alone would let the game choose boards in advance. The client seed is your contribution: because the game commits to its seed before knowing yours, it can't pick a server seed that produces boards it likes for you. The nonce makes each round different without changing either seed, so one pair of seeds can produce thousands of separate boards. If the nonce in your history skips or repeats, that's worth asking about.
Changing your client seed doesn't make mines easier to avoid. It changes which boards you get, not the chance of any tile holding a mine.
Reproduce it in Python
import hashlib, hmac
server, client, nonce, mines = "grid-desk-example-seed-7d41c0", "grid-reader-01", 3, 3
print(hashlib.sha256(server.encode()).hexdigest())
def numbers():
rnd = 0
while True:
h = hmac.new(server.encode(), f"{client}:{nonce}:{rnd}".encode(), hashlib.sha256).digest()
for i in range(0, 32, 4):
yield sum(h[i + j] / 256 ** (j + 1) for j in range(4))
rnd += 1
tiles, chosen, gen = list(range(25)), [], numbers()
for _ in range(mines):
chosen.append(tiles.pop(int(next(gen) * len(tiles))))
print(chosen) # [19, 13, 18]What a valid proof does and doesn't show
It shows the board for that round came from seeds fixed before your first click, so mines weren't moved in response to your picks.
It doesn't show that the multipliers are fair (check them against 1 ÷ P using the multiplier guide), that the site is licensed, or that you'll win. The house edge is in the payouts, not the board.
Verification checklist
- Save the server seed hash before you play.
- Note your client seed and the nonce of the round you want to check.
- Rotate seeds to reveal the old server seed.
- Hash the revealed seed; it must match the saved hash exactly.
- Recompute the board with the game's documented method.
- Compare with the mine positions shown in your history.
- If the method isn't documented, treat the fairness claim as uncheckable.
New to the game? Start with how the mines game works.
FAQ
Are some tiles on a mines board safer than others?
No. With random placement, every hidden tile has the same chance of holding a mine. Corners, edges and the centre are all equal.
How does a provably fair game decide where the mines go?
A common method hashes the server seed, client seed and nonce with HMAC-SHA256, turns the output into numbers between 0 and 1, and uses each number to pick a tile from the ones not yet chosen. The exact method varies by game, so check its documentation.
Can I see the mine positions before I play?
No. You only see a hash of the server seed before play. The seed itself is revealed after you rotate it, and only then can you recompute where the mines were.
Does provably fair mean I'm more likely to win?
No. It lets you check that the board wasn't changed after you started. The house edge in the multipliers is still there.