which should be, given a good randomness, literally equivalent to drawing randomly from a pool of 52 cards to form a deck. Is this somehow less efficient than their algorithm?
When you use your language's random function, you are getting a pseudorandom generator. As noted in the article, they were able to figure out the seed for the random function. Once you know the seed, the game is over. The adversary can now figure out the exact shuffled deck.
That is essentially the same as the algorithm in the article, which was Figure 3:
for (i is 1 to 52)
Swap i with random position between i and 52
After i iterations, the first i entries are your "shuffled", and the last 52 - i entries are your "cards". "random.choice(cards)" corresponds to picking a "random position between i and 52".
But they didn't do that - they picked a random position between 1 (not i) and 52 each time, which gives a biased shuffle. Even if their randomness had been perfect, this would have been problematic.
I suppose. I guess I just prefer the more direct, naive algorithm when the performance gain would seem to be so small. (not that I've profiled it or anything :/)
Depending on the array implentation, adding and removing elements is often an O(n) operation, which isn't terribly efficient. The Fisher-Yates method lets you get the same results without messing with the array length.
I'd be really interested in articles after 2008. About 2005-2007 is when the internet poker boom was on its height. I'd say in that area there must have been a lot of progress, because there was a lot of money in it, a lot more than now or 1999.
Well your site doesn't explain anything about how it technically works or what steps you go through for certification. Your demo doesn't work and appears to be a phony flash demo anyways. What kind of bond do you carry to support your guarantee? It's pretty easy to conclude that your service is a scam.
A far easier way to destroy your opponents in online poker is collusion, and it's happening all day, every day.
I'm sorry, this seems incredibly naive, but couldn't you just have
which should be, given a good randomness, literally equivalent to drawing randomly from a pool of 52 cards to form a deck. Is this somehow less efficient than their algorithm?
I think the problem is the randomness.
When you use your language's random function, you are getting a pseudorandom generator. As noted in the article, they were able to figure out the seed for the random function. Once you know the seed, the game is over. The adversary can now figure out the exact shuffled deck.
Also see: http://ericlippert.com/2013/05/06/producing-permutations-par...
My point was the algorithm, not the implementation, hence my disclaimer on 'good randomness'.
2 replies →
That is essentially the same as the algorithm in the article, which was Figure 3:
After i iterations, the first i entries are your "shuffled", and the last 52 - i entries are your "cards". "random.choice(cards)" corresponds to picking a "random position between i and 52".
But they didn't do that - they picked a random position between 1 (not i) and 52 each time, which gives a biased shuffle. Even if their randomness had been perfect, this would have been problematic.
I suppose. I guess I just prefer the more direct, naive algorithm when the performance gain would seem to be so small. (not that I've profiled it or anything :/)
1 reply →
It's not mentioned by name in the article, but the "proper" way to do it is with a Fisher-Yates shuffle: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
Depending on the array implentation, adding and removing elements is often an O(n) operation, which isn't terribly efficient. The Fisher-Yates method lets you get the same results without messing with the array length.
Since we're posting Python snippets:
I'd be really interested in articles after 2008. About 2005-2007 is when the internet poker boom was on its height. I'd say in that area there must have been a lot of progress, because there was a lot of money in it, a lot more than now or 1999.
that's why there exist fairluck.org, to make players be confident with their digital luck ; )
Well your site doesn't explain anything about how it technically works or what steps you go through for certification. Your demo doesn't work and appears to be a phony flash demo anyways. What kind of bond do you carry to support your guarantee? It's pretty easy to conclude that your service is a scam.