Remember hand cricket from school? You and a friend both show a number from 1 to 6 at the same time. If you're batting and the numbers are different, you score yours. If they're the same, you're out.
In Hand Cricket you play it against a bot we call the Mind Reader. You play a short match: two wickets each, and the most runs wins. Every throw also plays out on a little pixel cricket ground above the hands.
One throw. The bowler runs in while both hands shake. The hands open as the shot is played: my 6 against the bot's 4, so it's a six.
People who play it say the same thing: "It knows what I'm going to pick." It doesn't. Here's what it really does.
It picks before you do
The bot makes its move before you tap. You can see this. Its hand shows a lock and the word "Picked" while it waits for you.
So it can't see your number. All it has are the numbers you've already shown. It isn't reading your mind. It's reading your habits.
Six ways of guessing
The bot has six simple ways to guess your next number:
- Your favourite. The number you've shown most.
- A repeat. The same number as last time.
- Counting. You went 2, 3, so next is 4. Counting down works too.
- What came after one. After your last number, what did you usually show next?
- What came after two. The same, using your last two numbers.
- What came after three. The same, using your last three.
Each way makes a guess. But the bot only uses one of them. Which one?
It keeps score of its own guesses
Before every throw, the bot replays the match so far. For each throw, it asks every way of guessing: "Would you have got this one right?"
- A right guess earns a point.
- A wrong guess loses a fifth of a point.
- Recent throws count more. Each older throw counts 15% less than the one after it.
The way with the best score makes the guess. If you've been repeating yourself lately, "a repeat" wins. If you keep going 6, 4, 6, 4, "what came after one" wins.
Old throws fade, so it keeps up when you change. A habit from ten throws ago hardly counts.
On the very first throw it has nothing to go on, so it guesses at random. On the second throw it has one number, and every way that can guess bets on that number again. So if you repeat your first number straight away, you'll almost always be out.
What it does with the guess
The guess is what it thinks you will show. What it shows depends on who's batting.
- When you bat, it shows its guess. If it guessed right, the numbers match and you're out.
- When you bowl, you want to match its number, so it does the opposite. It avoids its guess. From the other five numbers it leans toward big ones, because it wants runs. The bigger the number, the more likely it shows it.
- One throw in ten, it ignores all this and plays a random number. Without that, a careful player could work out its guess and simply dodge it.
Showing 4 twice in a row. The first 4 scored. On the second, the bot showed 4 too: caught behind.
Can it beat a random player?
No. We test it with a script. Every time we change the bot, the script plays 400 matches against each of these made-up players. Some are random. Some have habits.
| Player | How often it read them | How often the player won |
|---|---|---|
| Truly random | 16% | 45% |
| Never repeats, otherwise random | 16% | 43% |
| Shows 6 half the time | 46% | 14% |
| Bats big (6 and 4), bowls small (1 and 2) | 43% | 5% |
| Counts 1 to 6, round and round | 86% | 0% |
| Always 6 | 95% | 0% |
Pure luck would read you one time in six, about 17%. Against a truly random player, that's all the bot manages. It only wins when there's a pattern to find.
The random player still wins a little under half. That's the bot's one small edge. When it bats, it leans toward big numbers, so it scores a bit more per throw. You could do that too. But batting big is a habit, and it notices habits.
The game shows you how you're doing. The "It read you" meter under the numbers counts how often its guess was right. A mark shows where pure luck would be.
A match played with habits: 6s and 4s when batting, 1s and 2s when bowling. It read 3 of 9 throws, about twice what luck would.
People aren't good at random
If being random is enough, why does the bot catch people so often? Because people are bad at it.
Psychologists have known this for a long time. A 1972 review of the research found that people asked to make up random sequences can't do it well. They switch too often and avoid repeats. Real randomness repeats more than people expect.
Games show the same thing. In a lab study of rock-paper-scissors, the best plan in theory was to play completely at random. The players didn't. Their next move depended on whether they had just won, lost or tied.
Hand cricket brings its own habits. People love 6s when batting. They fall into rhythms. They show the number they were just out on, or carefully avoid it.
The game tells you why
You don't have to guess what it saw. After every throw, a line under the hands says why it guessed what it did. For example: "It guessed you'd repeat your 4." Every number in those lines comes from your own picks.
When a habit costs you, a tip names the fix. Turn a habit against it, and you'll see "Trap sprung!". At the end, the result card shows where it caught you.
To see its thinking before you pick, try Practice from the start screen. It shows the bot's brain: four bars for your favourite, a repeat, counting and your rhythm. Each bar grows when that habit would have guessed you right. The brightest one is what it will use next.
Practice, after showing 4 four times while bowling. Its brain bets on my favourite, so it dodged 4.
Practice also has three short lessons: see it read you, the bowling trap, and the batting trap. They teach one trick: build a habit while you bowl, where being read costs nothing. Then use it when you bat.
Level 2: it learns your tricks
Once you know how the bot thinks, you can beat it. We tested that too. A made-up player who always dodges its guess wins 99 matches in 100. So we built Level 2. It opens after your first win.
Level 2 knows everything Level 1 does, plus two things:
- Your dodge. Before each throw, it notes what your habits say you'll show. Then it asks: "The other times they said 3, what did you show?" If you keep switching to 6, it starts guessing 6.
- People rarely repeat. When no habit has worked yet, it skips your last number and guesses from the other five.
| Player | Wins against Level 1 | Wins against Level 2 |
|---|---|---|
| Truly random | 45% | 42% |
| Always dodges its guess | 99% | 43% |
| Sets traps, like the lessons | 98% | 53% |
It still can't beat a truly random player. It reads them 16% of the time, the same as luck.
We tried other ideas too, and left them out. Splitting your batting and bowling habits didn't help. Blending all the habits into one guess helped a little. But then the game couldn't tell you why it guessed.
How to fool it
- Don't repeat your first number straight away. With nothing else to go on, it bets you will.
- Don't have a favourite. Spread your numbers out, even the small ones.
- Don't count. 1, 2, 3 or 6, 5, 4 is one of the first things it checks.
- Watch for rhythms. If you always show 5 after a 2, it will learn that.
- Use what it expects when you bowl. It dodges the number it thinks you'll show. Say you showed lots of 6s while batting. Now it expects 6, so it avoids 6 and leans toward 5 and 4. So show a 5.
- Use it when you bat, too. If it expects your 6, it will show 6. Show something else, and you're safe unless it picked at random.
- On Level 2, don't always dodge the same way. If you always switch from 3 to 6, it learns that.
One honest note: never repeating is a pattern too. Level 1 doesn't look for it, which is why that player did as well as a random one. Level 2 starts from it. With no habit to go on, it skips your last number. That reads a never-repeater 18% of the time, a little better than luck.
Play a match, then look at the meter. If it read you more than one time in six, it found something. Try to keep it guessing.