I'm coding an online poker game. The shuffling part is using Fisher Yates algorithm. But I have no idea which random number generator to generate good unpredictable random numbers for the shuffling algorithm to use. 52 cards have 52! ~= 8.065e67 possible sequences.
What RNG(random number generator) algorithm suits for poker cards shuffle?
1.5k Views Asked by AudioBubble At
2
There are 2 best solutions below
3
Lee Daniel Crocker
On
As you point out, you should use one with far more than 52! possible internal states, which means 226 bits of state. There are many PRNGs that exceed this, having 1024 or more bits of state. You also want something fast, so you can simulate millions of hands. The most popular algorithm that meets these criteria is Mersenne Twister. I personally also like variants of Marsaglia's XORshift.
I generally only use hardware true RNGs (that most PCs have nowadays) for cryptography and for seeding these PRNGs, but I am told that some of the better ones are fast enough to produce values even for simulations. You'd have to look that up for your hardware.
Related Questions in ALGORITHM
- MCNP 6 - Doubts about cells
- Given partially sorted array of type x<y => first apperance of x comes before first of y, sort in average O(n)
- What is the algorithm behind math.gcd and why it is faster Euclidean algorithm?
- Purpose of last 2 while loops in the merge algorithm of merge sort sorting technique
- Dots and Boxes with apha-beta pruning
- What is the average and worst-case time complexity of my string searching algorithm?
- Building a School Schedule Generator
- TC problem 5-2:how to calculate the probability of the indicator random variable?
- LCA of a binary tree implemented in Python
- Identify the checksum algorithm
- Algorithm for finding a subset of nodes in a weighted connected graph such that the distance between any pair nodes are under a postive number?
- Creating an efficent and time-saving algorithm to find difference between greater than and lesser than combination
- Algorithm to find neighbours of point by distance with no repeats
- Asking code suggestions about data structure and algorithm
- Heap sort with multithreading
Related Questions in RANDOM
- Producing filtered random samples which can be replicated using the same seed
- Random getting value from a range or a specific value
- Unique and random selection of 10 rows per user in a table
- How to calculate the accuracy in number guessing game?
- Using attributes from instances of array of objects in other classes
- How do I write such a random source code generator?
- How to randomly load html file inside a html page on page load using javascript?
- New error on random number assigned to local variable , Rails
- Why does the code return the same 5 random numbers every time
- How can I efficiently find two numbers in an array that sum up to a given target without using the same element twice?
- How can I use a variable that is defined in one script in a different script in Unity
- Why is C# BigInteger not always the same bit length?
- Choosing a sequence of bitwise operations
- java: method nextLong in class java.util.Random cannot be applied to given types;
- How to add the outout the random element from array and keep adding 1 by 1 in empty array?
Related Questions in SHUFFLE
- How to make a randomize answer quiz game with IEnumerator in Unity?
- Open random .html file when pressing Shuffle button
- Fisher-Yates shuffle: Who is right, .NET 8 or Wikipedia?
- Randomly Select Columns to Shuffle of a Two-Dimensional Dataframe
- Pandas shuffle rows within groups in dataframe, leaving the relative groups order intact
- JavaScript Shuffle Function Not Shuffling Properly
- How to implement "play next" feature in just_audio?
- Why Spark is using both NettyBlockTransferService and my BlockStoreClient?
- How would you shuffle a doubly linked list?
- Pool two vectors together
- I'm trying to randomise a list made up of lines from a text file in python, and random.shuffle() isn't working
- Randomize audio file array with one button in HTML/Javascript to stop previous track and start new
- Shuffle Inputs to Keras Model Independently
- Is the beginner javascript shuffling algorithm an unbiased shuffle
- Java Quiz (Shuffling Answers)
Related Questions in POKER
- How to save scores of a poker "program" in a json file
- Trying coding a 5 card poker
- Give variables 2 values
- Algorithmic Game Theory - Poker, CFR and the "Approximation Distance"
- CMake not finding Boost program_options building PokerStove on Windows 10
- Poker equity simulation by monte carlo
- Python appears to be passing then wrong object into a function
- Trying to get random values from an array, but instead getting the first 4
- Texas Hold'em Poker - Find the last two cards to make a given player win
- Regex doesn't read multiple lines correctly in C#
- not sure why a pandas df won't output
- Determine if a function has two pairs
- How do I fix this problem printing playing cards using unicode in python?
- How to access values from an array of hashes - Ranking poker hands in Ruby
- How to Limit the content of the list when printed?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
8e+67is a lot big number, but it is not very high in data size. It is only 226 bit in data length. 28 bytes.You may consider using a CSPRNG, a cryptographically strong pseudorandom generator, i.e. an RNG which generates enough strong randomness to be usable for cryptography.
Sometimes also the CPU has a true random number source, it is fast. Here I describe the CSPRNG.
On Linux, you can simply read out the random bytes from the
/dev/urandomcharacter device file.