Good news, everyone! The MTGO shuffler is random! Hooray!
So, with the good news out of the way, how did I come upon this glorious discovery? Well, I trained an army of hamsters created a script to record the number of lands in over 13,000 openings hands drawn from a 60 card deck with 24 lands.
Hypergeometric Distribution
Now, how do we know the results are random? Well, that's where the hypergeometric distribution comes in. The hypergeometric distribution is usually described by the following problem:
Given a bag with N white marbles and M black marbles, what's the probability, if you remove X marbles from the bag, that Y of those marbles are white?
So, we can state the problem like this:
Given a deck with 24 lands and 36 non-lands, what's the probability, if you draw 7 cards from the deck, that Y of those cards will be lands?
If you wish to try this for yourself, the code I've provided is most of what's necessary. First, you will need Sikuli X to run the script and for ease of manipulating pictures and regions. You'll want to change PATH_BASE to wherever you want the results to wind up. The beeps are there because I had my laptop churning away behind me, and I needed to know when MTGO caused a hiccup.
Miscellaneous
Here are some posts with additional details: #9, #17
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
Could you please train your army of hampsters (er script) to mull that hand and record the results parsing the resultant data based on the number of lands in the original hand.
If you can show the same distribution in the 6 regardless of the original number of lands, then I'll buy into your data, and know that when I have to double mull due to drawing a 5 lander in my 6 that it's just my night to have bad stats and I should be watching a movie instead.
Based on this distribution I would auto mull 15% or 1-2 hands in a 4 round tournament, now I might mull more, say a 2 lander with high cc critters (2 Land 2 Koth, 3 Kuldotha Phoenix is likely going back).
Private Mod Note
():
Rollback Post to RevisionRollBack
Out of the blackness and stench of the engulfing swamp emerged a shimmering figure. Only the splattered armor and ichor-stained sword hinted at the unfathomable evil the knight had just laid waste.
Nice work, but the math you did is not actually sufficient to show that the shuffler is actually random. For example, consider a shuffler that worked as follows:
1. Generate 2-3 0 land hands
2. Generate 12-13 1 land hands
3. Generate 27-28 2 land hands
etc.
9. Go back to step 1.
It would give the correct distribution, but is clearly not random.
Besides, is being random a good thing? If the point of MTGO is to emulate paper magic as much as possible, a good shuffler should try to emulate the shuffling of a physical deck, which isn't truly random.
So, wait, how did you record 13,000 actual Magic Online draws? You didn't play 13,000 hands yourself, did you? How does this work?
Private Mod Note
():
Rollback Post to RevisionRollBack
Quote from Bateleur »
Ambush Krotiq makes me laugh so much. I keep rereading the card and it keeps not having Flash. In what sense is this an ambush again? I just have visions of this huge Krotiq poorly concealed in some bushes, feeling slightly sad that his carefully planned ambushes never seem to work.
Could you please train your army of hampsters (er script) to mull that hand and record the results parsing the resultant data based on the number of lands in the original hand.
If you can show the same distribution in the 6 regardless of the original number of lands, then I'll buy into your data, and know that when I have to double mull due to drawing a 5 lander in my 6 that it's just my night to have bad stats and I should be watching a movie instead.
1) Lots more work. Not in theory, but in practice MTGO makes this sooooo much more difficult than it should be.
Nice work, but the math you did is not actually sufficient to show that the shuffler is actually random. For example, consider a shuffler that worked as follows:
1. Generate 2-3 0 land hands
2. Generate 12-13 1 land hands
3. Generate 27-28 2 land hands
etc.
9. Go back to step 1.
It would give the correct distribution, but is clearly not random.
True, nothing from the "civilian" side can ever prove that the shuffler is random. That would require access to the shuffler code source*, the source of (pseudo-)random numbers, and a mathematician, none of which I have access to.
* IIRC, there's a blog post floating around describing how they use the Knuth/Fisher-Yates shuffle, but it's so old that I'm wary to rely on it. Plus, saying that you use a certain shuffle and showing that it's implemented 100% correctly, especially a hand-rolled version, are different things.
Frustratingly, I don't have the knowledge or tools, other than brute force, to perform any kind of statistical analysis that might increase the faith in the numbers that we can get. However, I hope that at least having some numbers that indicate randomness in the shuffler will get some people to shut up ;).
So, wait, how did you record 13,000 actual Magic Online draws? You didn't play 13,000 hands yourself, did you? How does this work?
I used Python, along with Sikuli, an image-recognition library that can do some simple, yet impressive, things such as clicking on buttons.
In theory, this is simple: Program the series of clicks required to move around in MTGO, draw an opening hand, count the lands, and repeat. Specifically, I had it start a free trial (to avoid getting banhammered), load the "Stampede of Beasts" deck (24 lands), and count the number of Forests plus Mountains.
In practice, MTGO made my life a living hell when doing this. The GUI would act erratically, meaning lots of time.sleep()s everywhere so that the script could be sure that MTGO would respond to a click.
Oh, and the memory leak. Every 60 hands I had the script close MTGO and reload it or else MTGO would complain of having no memory.
Basically, anytime MTGO did something stupid I had the script restart it. Before that I had to babysit MTGO, thinking that I just needed to tweak the script some. Nope, the best thing to do was just whack MTGO with a shovel and try again. This lead to abhorrent code that I'm ashamed to have written, but again, I blame MTGO.
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
If the point of MTGO is to emulate paper magic as much as possible, a good shuffler should try to emulate the shuffling of a physical deck, which isn't truly random.
The truth is that real life should emulate the true random behavior. Any intentional way to manipulate the order of the deck when shuffling (like mana weaving) is cheating and you should report it (or stop doing it).
The truth is that real life should emulate the true random behavior. Any intentional way to manipulate the order of the deck when shuffling (like mana weaving) is cheating and you should report it (or stop doing it).
I'm not talking about intentional deck manipulation. But you have limited time to shuffle and each shuffle only adds so much randomness.
If you do seven riffle shuffles, the deck might as well be random. Most people can do seven riffle shuffles in a minute and a half (and you have 3 minutes). The "side shuffle" that most Magic players do is less random than a riffle shuffle as performed by an average person, but you can do many more of them.
However, people are lazy and are afraid of bending their cards. I see way too many people do about 3 riffle shuffles and a few pile shuffles (which do absolutely nothing) before presenting. I don't see any reason to emulate this undesirable real-life behavior, any more than MTGO should emulate the ability to see your opponent's hand in his sunglasses.
I'm not talking about intentional deck manipulation. But you have limited time to shuffle and each shuffle only adds so much randomness.
With the goal being to bring your deck as close to random as possible. I don't really see the argument for intentionally gimping the modo shuffler just because IRL shuffling isn't perfect.
The assertion that each shuffle adds randomness is false. Consider the counterexample that 8 perfect riffle shuffles will return a deck of playing cards to its original state(Proof http://mathworld.wolfram.com/Out-Shuffle.html). Furthermore consider that the simplest concievable magic deck(24 of a single basic land and 9 4ofs) would contain 60!/(24!*(4!)^9) = 1.3x10^68. For reference there are an estimated 8.8x10^79 atoms in the universe(Source http://en.wikipedia.org/wiki/Observable_universe). Random is a hard term to quantify, but any non-fixed(mana weaving etc) actions such as imperfect riffling or hand over hand shuffles should produce an orientation of your deck that has never existed before. Also consider that even if you really only have time to perform a few shuffles between games your deck was likely "random" before you started playing, and the order you reconstruct your deck after games by picking up your permanents and shuffling your hand back in is likely going to be good enough to yield the desired variance.
You would have a point if someone did a perfect riffle shuffle. But no one does.
The typical riffle shuffle is modeled fairly well by the binomial shuffle, where the probability of dropping the next card from the "left hand" half is equal to the proportion of cards remaining in the "left hand" half. Such a shuffle is very good at randomizing the deck (seven or eight will do a good job). And it actually is the case that the more such shuffles you do, the closer the deck becomes to truly random, in the sense that the probability distribution on the arrangements of cards approaches the uniform distribution.
If anyone has studied the way the side shuffle, as done by actual humans, mixes cards, I'm not aware of it.
Also, the goal of randomizing the deck is to have every pattern of cards be equally likely, not merely to create a new one each time. For example, if patterns with well-distributed lands are significantly more likely than patterns with clumped lands, then the shuffle is not randomizing the deck effectively, even if you have no idea where the cards are and the arrangement of cards is a new one.
The point, though, is that the MTGO shuffler should emulate the way a deck ought to be shuffled, which is not 8 perfect out shuffles or a tiny number of riffle shuffles.
Computers are incapable of ever generating a truly "random" algorithm. That's not how computers work. They can run an extremely advanced series of patterns and sequences, but they cannot ever truly do anything "random."
Computers are incapable of ever generating a truly "random" algorithm. That's not how computers work. They can run an extremely advanced series of patterns and sequences, but they cannot ever truly do anything "random."
True enough for psuedo-random number generators. And while I suppose that MTGO isn't getting its random bits from atmospheric noise, I was merely trying to show that it is random enough. What is "enough?" Well, close enough so that any reasonable person would say "my shuffling technique is the root cause of the discrepancy I feel between real life and MTGO draws" instead of "ZOMG MODO SHUFFLER R NOT RANDOMZ."
Private Mod Note
():
Rollback Post to RevisionRollBack
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
I used Python, along with Sikuli, an image-recognition library that can do some simple, yet impressive, things such as clicking on buttons.
In theory, this is simple: Program the series of clicks required to move around in MTGO, draw an opening hand, count the lands, and repeat. Specifically, I had it start a free trial (to avoid getting banhammered), load the "Stampede of Beasts" deck (24 lands), and count the number of Forests plus Mountains.
In practice, MTGO made my life a living hell when doing this. The GUI would act erratically, meaning lots of time.sleep()s everywhere so that the script could be sure that MTGO would respond to a click.
Oh, and the memory leak. Every 60 hands I had the script close MTGO and reload it or else MTGO would complain of having no memory.
Basically, anytime MTGO did something stupid I had the script restart it. Before that I had to babysit MTGO, thinking that I just needed to tweak the script some. Nope, the best thing to do was just whack MTGO with a shovel and try again. This lead to abhorrent code that I'm ashamed to have written, but again, I blame MTGO.
Did you do this with 1v1 or with a solitaire game? You could use a solitaire game with best two out of three match setting. After the game starts, you can concede the game, which takes you to the sideboarding screen, then starts a new game. Since there is only one player, there will never be a best two out of three outcome so the match continues indefinitely until you concede the match. You could maybe even test mulligans this way too. It would be interesting to see if there is any statistical difference in mulligans from 1 land hands and mulligans from 5 land hands.
Did you do this with 1v1 or with a solitaire game? You could use a solitaire game with best two out of three match setting. After the game starts, you can concede the game, which takes you to the sideboarding screen, then starts a new game. Since there is only one player, there will never be a best two out of three outcome so the match continues indefinitely until you concede the match.
You hit the nail on the head. I forgot to mention that I (fortunately) stumbled upon this strange property of solitaire, best of 3 that gives you infinite games. If MTGO didn't have the memory leak, then I could've ridden a single match to data-collecting glory.
Private Mod Note
():
Rollback Post to RevisionRollBack
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
Any chance of doing the same for MWS and Cockatrice?
I'll leave those as an exercise for the reader. MWS and Cockatrice should be much more tempermental than MTGO. I would suggest that those adventurous enough actually connect to a "real" game to test the server's random number generator, rather than the local one.
Also, I took a look at Cockatrice's source and found its server's PRNG and shuffler. Not that I can say much about them (although they seem to be using a Knuth shuffle).
Private Mod Note
():
Rollback Post to RevisionRollBack
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
This thread topic is misleading. You seem to have misunderstood the reasons people start threads whining about the MTGO shuffler which, of course, are:
1) I don't know how to mulligan effectively.
2) I don't know how to build a deck properly.
3) I am a terrible magic player, but I think I'm good so something else must be causing all these losses.
4) I want attention.
and never because:
5) The shuffler actually screwed me.
Counter-intuitive though it may seem, the last MTGO shuffler thread has to address several other issues and doesn't actually need to bother with whether or not the shuffler actually is random.
Private Mod Note
():
Rollback Post to RevisionRollBack
Go Habs Go!
On a trade break. Getting ripped blows...
I'd very much like to request that the original post be added to the Wizards community forums, that way the moderators there can link to the stats, please!
Perhaps the Magic Online General forum would be a good place for it there.
Computers are incapable of ever generating a truly "random" algorithm. That's not how computers work. They can run an extremely advanced series of patterns and sequences, but they cannot ever truly do anything "random."
Well, I think what you mean is that a pure algorithm can't generate "true randomness". Which is fine. But...
There's such a thing as "sufficiently" random. For example, a PRNG can be periodic, but have such a large period that it makes no difference for something like MTGO -- no individual player will play enough games with the same deck to notice a pattern (and, speaking as a judge, in paper Magic what we care about in shuffling is that once you're done you can't know the location of specific cards or the order/pattern of specific runs of cards in the deck). And of course the values it produces can be distributed in such a way as to meet criteria for randomness.
If you want to get really picky, you can get true randomness out of electronic hardware in a couple different ways. It's just that very few people actually need "true" randomness enough to make it worthwhile.
I posted the source code to the script I used in the OP. Sorry it took so long, but I thought that I would make it presentable first. That never happened, but oh well, I guess it's better than nothing.
Private Mod Note
():
Rollback Post to RevisionRollBack
Divide & Conquer Card Shuffler
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the paranoid thorough 40/60-card player. Check it out!
2.1% chance of having no lands in your opening hand? Um, that is obviously false. I run a standard 23 land deck and I have no lands in my opening hand something around 20% of the time.
2.1% chance of having no lands in your opening hand? Um, that is obviously false. I run a standard 23 land deck and I have no lands in my opening hand something around 20% of the time.
You don't understand numbers or statistics do you?
The odds of getting a no land hand with a 24 land deck is as follows
36/60 * 35/59 * 34/58 * 33/57 * 32/56 * 31/55 * 30/54
or
36!/(36-7)! / (60!/(60-7!))
or
36!*53!/(29!*60!)
or
~2.16%
This is easily understood as the odds of drawing a nonland with the first card is 36/60 e.g. the number of nonlands in the deck. Since the draws are without replacement (making it a hypergeometric distribution not a binomial distribution) the next draw's odds are 35/59 and so on.
Now, you might shuffle horribly, or your memory might over represent those hands with no lands in your mind (as they are so bad that your mind draws extra attention to them), or some other option. What isn't false is the 2.16% odds.
Sans inflamatory tone, there's also a little thing called "Sample Size". FunkyMo's sample is 13,000 opening hands. I don't think you've played anything near that.
If I flip 10 coins and get heads 8 times, it doesn't mean the odds of getting tails is suddenly 20%. It's still 50%. It's just my bad (or good) luck, given the sample size.
So, with the good news out of the way, how did I come upon this glorious discovery? Well,
I trained an army of hamsterscreated a script to record the number of lands in over 13,000 openings hands drawn from a 60 card deck with 24 lands.Hypergeometric Distribution
Now, how do we know the results are random? Well, that's where the hypergeometric distribution comes in. The hypergeometric distribution is usually described by the following problem:
So, we can state the problem like this:
The Data
Numbers! Charts!
Now, I'm no statistician, but it looks good enough for government work.
Code
https://github.com/akeeton/MTGO-Shuffler-Tester
If you wish to try this for yourself, the code I've provided is most of what's necessary. First, you will need Sikuli X to run the script and for ease of manipulating pictures and regions. You'll want to change PATH_BASE to wherever you want the results to wind up. The beeps are there because I had my laptop churning away behind me, and I needed to know when MTGO caused a hiccup.
Miscellaneous
Here are some posts with additional details: #9, #17
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out!I have played no where near 13000 games and I have drawn no lands and all lands quite a few times. Why am I not playing the lottery?:-/
If you can show the same distribution in the 6 regardless of the original number of lands, then I'll buy into your data, and know that when I have to double mull due to drawing a 5 lander in my 6 that it's just my night to have bad stats and I should be watching a movie instead.
Based on this distribution I would auto mull 15% or 1-2 hands in a 4 round tournament, now I might mull more, say a 2 lander with high cc critters (2 Land 2 Koth, 3 Kuldotha Phoenix is likely going back).
My YouTube Channel
1. Generate 2-3 0 land hands
2. Generate 12-13 1 land hands
3. Generate 27-28 2 land hands
etc.
9. Go back to step 1.
It would give the correct distribution, but is clearly not random.
Besides, is being random a good thing? If the point of MTGO is to emulate paper magic as much as possible, a good shuffler should try to emulate the shuffling of a physical deck, which isn't truly random.
Practice for Khans of Tarkir Limited:
Draft: (#1) (#2) (#3) (#4) (#5)
1) Lots more work. Not in theory, but in practice MTGO makes this sooooo much more difficult than it should be.
2) See my response below.
True, nothing from the "civilian" side can ever prove that the shuffler is random. That would require access to the shuffler code source*, the source of (pseudo-)random numbers, and a mathematician, none of which I have access to.
* IIRC, there's a blog post floating around describing how they use the Knuth/Fisher-Yates shuffle, but it's so old that I'm wary to rely on it. Plus, saying that you use a certain shuffle and showing that it's implemented 100% correctly, especially a hand-rolled version, are different things.
Frustratingly, I don't have the knowledge or tools, other than brute force, to perform any kind of statistical analysis that might increase the faith in the numbers that we can get. However, I hope that at least having some numbers that indicate randomness in the shuffler will get some people to shut up ;).
I used Python, along with Sikuli, an image-recognition library that can do some simple, yet impressive, things such as clicking on buttons.
In theory, this is simple: Program the series of clicks required to move around in MTGO, draw an opening hand, count the lands, and repeat. Specifically, I had it start a free trial (to avoid getting banhammered), load the "Stampede of Beasts" deck (24 lands), and count the number of Forests plus Mountains.
In practice, MTGO made my life a living hell when doing this. The GUI would act erratically, meaning lots of time.sleep()s everywhere so that the script could be sure that MTGO would respond to a click.
Oh, and the memory leak. Every 60 hands I had the script close MTGO and reload it or else MTGO would complain of having no memory.
Basically, anytime MTGO did something stupid I had the script restart it. Before that I had to babysit MTGO, thinking that I just needed to tweak the script some. Nope, the best thing to do was just whack MTGO with a shovel and try again. This lead to abhorrent code that I'm ashamed to have written, but again, I blame MTGO.
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out![Clan Flamingo]
The clan for custom card creators!
I'm not talking about intentional deck manipulation. But you have limited time to shuffle and each shuffle only adds so much randomness.
Practice for Khans of Tarkir Limited:
Draft: (#1) (#2) (#3) (#4) (#5)
However, people are lazy and are afraid of bending their cards. I see way too many people do about 3 riffle shuffles and a few pile shuffles (which do absolutely nothing) before presenting. I don't see any reason to emulate this undesirable real-life behavior, any more than MTGO should emulate the ability to see your opponent's hand in his sunglasses.
With the goal being to bring your deck as close to random as possible. I don't really see the argument for intentionally gimping the modo shuffler just because IRL shuffling isn't perfect.
The typical riffle shuffle is modeled fairly well by the binomial shuffle, where the probability of dropping the next card from the "left hand" half is equal to the proportion of cards remaining in the "left hand" half. Such a shuffle is very good at randomizing the deck (seven or eight will do a good job). And it actually is the case that the more such shuffles you do, the closer the deck becomes to truly random, in the sense that the probability distribution on the arrangements of cards approaches the uniform distribution.
If anyone has studied the way the side shuffle, as done by actual humans, mixes cards, I'm not aware of it.
Also, the goal of randomizing the deck is to have every pattern of cards be equally likely, not merely to create a new one each time. For example, if patterns with well-distributed lands are significantly more likely than patterns with clumped lands, then the shuffle is not randomizing the deck effectively, even if you have no idea where the cards are and the arrangement of cards is a new one.
The point, though, is that the MTGO shuffler should emulate the way a deck ought to be shuffled, which is not 8 perfect out shuffles or a tiny number of riffle shuffles.
True enough for psuedo-random number generators. And while I suppose that MTGO isn't getting its random bits from atmospheric noise, I was merely trying to show that it is random enough. What is "enough?" Well, close enough so that any reasonable person would say "my shuffling technique is the root cause of the discrepancy I feel between real life and MTGO draws" instead of "ZOMG MODO SHUFFLER R NOT RANDOMZ."
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out!Did you do this with 1v1 or with a solitaire game? You could use a solitaire game with best two out of three match setting. After the game starts, you can concede the game, which takes you to the sideboarding screen, then starts a new game. Since there is only one player, there will never be a best two out of three outcome so the match continues indefinitely until you concede the match. You could maybe even test mulligans this way too. It would be interesting to see if there is any statistical difference in mulligans from 1 land hands and mulligans from 5 land hands.
You hit the nail on the head. I forgot to mention that I (fortunately) stumbled upon this strange property of solitaire, best of 3 that gives you infinite games. If MTGO didn't have the memory leak, then I could've ridden a single match to data-collecting glory.
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out!I'll leave those as an exercise for the reader. MWS and Cockatrice should be much more tempermental than MTGO. I would suggest that those adventurous enough actually connect to a "real" game to test the server's random number generator, rather than the local one.
Also, I took a look at Cockatrice's source and found its server's PRNG and shuffler. Not that I can say much about them (although they seem to be using a Knuth shuffle).
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out!1) I don't know how to mulligan effectively.
2) I don't know how to build a deck properly.
3) I am a terrible magic player, but I think I'm good so something else must be causing all these losses.
4) I want attention.
and never because:
5) The shuffler actually screwed me.
Counter-intuitive though it may seem, the last MTGO shuffler thread has to address several other issues and doesn't actually need to bother with whether or not the shuffler actually is random.
On a trade break. Getting ripped blows...
Perhaps the Magic Online General forum would be a good place for it there.
Well, I think what you mean is that a pure algorithm can't generate "true randomness". Which is fine. But...
----
Lightning Bolts don't kill creatures. State-based actions kill creatures.
Divide & Conquer is an Android app that completely shuffles your real deck of cards. It's great for unwieldy decks (Battle of Wits, Commander, etc.) and the
paranoidthorough 40/60-card player. Check it out!You don't understand numbers or statistics do you?
The odds of getting a no land hand with a 24 land deck is as follows
36/60 * 35/59 * 34/58 * 33/57 * 32/56 * 31/55 * 30/54
or
36!/(36-7)! / (60!/(60-7!))
or
36!*53!/(29!*60!)
or
~2.16%
This is easily understood as the odds of drawing a nonland with the first card is 36/60 e.g. the number of nonlands in the deck. Since the draws are without replacement (making it a hypergeometric distribution not a binomial distribution) the next draw's odds are 35/59 and so on.
Now, you might shuffle horribly, or your memory might over represent those hands with no lands in your mind (as they are so bad that your mind draws extra attention to them), or some other option. What isn't false is the 2.16% odds.
If I flip 10 coins and get heads 8 times, it doesn't mean the odds of getting tails is suddenly 20%. It's still 50%. It's just my bad (or good) luck, given the sample size.
My YouTube Channel