Only single user accounts
verify the uniqueness of the draw
※ UniPicker Draw Logic - Refer to seed generation method
※ Refer to UniPicker Draw Logic
Fair Draw ?
Check The Uniqueness Of The DrawIs the result for this single drawing ?
'Seed' Generation ProcessCan the 'seed' generation process be verified ?
Public Random Number AlgorithmsWhat algorithm is used ?
Disclose The Process Of The DrawHow is the winner selected ?
Public DrawConduct all drawing processes publicly ?
Verification Of Draw ResultsCan the draw result be verified ?
UniPicker Draw
Public Record Policy,
Apply The Unique Certification Code
Public Seed ServerReal-time disclosure of 'seed' status
Open-Source Random Number Algorithm
Providing UniPicker White Paper
On-Site Public Draw,
YouTube Live Draw
Draw Screen Record
Draw File Hash code Storage
Draw Replay
Generate Seed
Generate Random Numbers For Entries
Assign Random Number To Each Entry
Sort The Random Number And Determine Winners
( ※ Original Data is stored only when UniPicker manager conducts the draw. )
Check The UniPicker CertificateCheck the seed, seed request key, file hash code in draw certificate.
Check The Record Of 'Seed' Issued By Public Seed ServerSearch the seed request key in the real-time seed issuance status page.
Verify that the 'searched seed' and the 'seed on the certificate' match.
Verification Of The Original Draw DataCheck the file hash code of the draw data(entries, setting, results) stored in UniPicker.
Compare the file hash code in the certificate to verify it is the original file.
Replay The Draw By Verification Function1) The verified original file is used to set up the draw.
2) Perform verification draw using UniPicker by manually entering the seed.
3) Compare the replay draw with the previous draw to check if they are identical.
Conduct The Draw Directly
CERT-PUB
UniPicker Public Draw( on-site draw, Youtube live draw )
CERT-UNI
UniPicker Manager Draw
CERT-CDE
Buy code, Draw directly
Electronic draw is a drawing method that randomly selects winners using 'computer random numbers'. It generates random numbers within a specific range and assigns them to each entry, and then selects the winner who received the fastest random number or matches the randomly generated number.
A computer generates random numbers using various calculation logic, known as a 'random number generation algorithm'. This can be understood as a type of 'function' that produces an output value depending on the input value.
The computer's random number generation algorithm also requires input values to output random numbers.
To generate a large quantity of random numbers, previously generated random numbers are used as input values for the algorithm to generate the next set of random numbers. In other words, by passing an input value to the random number generation algorithm only once, we can repeatedly follow the procedure outlined above to generate a large number of random numbers.
The initial input value passed to the 'random number generation algorithm' is called the 'seed'.
All random numbers generated by the 'random number generation algorithm' are determined by the initially inputted 'seed', so the 'seed' can be considered as the factor that decides whether you win or not. If you input the same 'seed' and the same draw data into two different draws and use the same 'random number generation algorithm' to draw lots, the results of the two draws will be exactly the same.
Fair digital draw require transparent disclosure and explanation of how the 'seed' was determined, in addition to disclosing the 'seed' and 'random number generation algorithm' used for the draw.
UniPicker manages the 'seed' fairly according to the following procedure. ( storage period: up to 2 years )
- UniPicker uses the Random library provided by the 'Java' programming language.
- Input Seed : When a user requests a seed from UniPicker, the [PC Time] and the [Reception Time] of the server
that received the request are converted into milliseconds (1/1000 second) Unix time* and summed to be passed as input to the seed generation algorithm.
- Using open source algorithms available on Github* ( https://github.com/michaeldzjap/rand-seed )
- Input Seed: The 'UniPicker seed' generated by the seed server is provided .
Unix Time: It is an integer of the elapsed time in seconds since January 1, 1970, Coordinated Universal Time.
Github: It is a source code repository where developers can manage and share source code.
UniPicker selects winners using the following logic.
| Entry | Random Number |
|---|---|
| Emily | 0.2498216440435499 |
| William | 0.5390021712519228 |
| Sophia | 0.4989048286806792 |
| James | 0.881228075362742 |
| Olivia | 0.2693764951545745 |
| Benjamin | 0.3479937631636858 |
| Isabella | 0.7156692454591393 |
| Draw Setting Info | Random Number |
|---|---|
| 101-101 | 0.05107798264361918 |
| 101-504 | 0.5512312969658524 |
| 103-502 | 0.3550391604658216 |
| 105-701 | 0.26768961385823786 |
| 101-903 | 0.36229446344077587 |
| Entry | Random Number |
|---|---|
| James | 0.881228075362742 |
| Isabella | 0.7156692454591393 |
| William | 0.5390021712519228 |
| Sophia | 0.4989048286806792 |
| Benjamin | 0.3479937631636858 |
| Olivia | 0.2693764951545745 |
| Emily | 0.2498216440435499 |
| Draw Setting Info | Random Number |
|---|---|
| 101-504 | 0.5512312969658524 |
| 101-903 | 0.36229446344077587 |
| 103-502 | 0.3550391604658216 |
| 105-701 | 0.26768961385823786 |
| 101-101 | 0.05107798264361918 |
The random numbers used in the weighted winner selection process are generated using either the SHA-256 (Seed|N) method¹ or the xoshiro (Seed) method², excluding the seed generation process.
1. Weighted Range Draw MethodUniPicker applies the Weighted Win Range Draw Method as follows.
Shuffle the entries. Shuffle the entry list using the Fisher–Yates shuffle algorithm³.
The entries are arranged according to the shuffled order, and each entry is assigned a Win Range proportional to its weight.
Shuffle the draw info using the Fisher-Yates shuffle algorithm³.
(1) The 'Win Value' ranges from 1 to the 'Total Weight'.
(2) Generate a random number within this range and use it as the 'Win Value'.
Ex: If the 'Total Weight' is 600,
the 'Win Value' ranges from 1 to 600.
Iterate through the entries in order. If the 'Win Value' falls within an entry's 'Win Range',
that entry is selected as the winner.
Assign the selected winner to the shuffled draw info.
Repeat the process from (3) to (6) until all draw info has been assigned.
Ex: Total Weight 600 → Winner Weight 160 → Next Win Value: 1 to 440
412
Generates each random number independently using the SHA-256 hash function. Suitable for drawings that require reproducibility and verifiability.
² xoshiro(Seed) MethodGenerates a sequence of random numbers based on a seed value. Provides high performance and is suitable for large-scale drawings.
³ Fisher-Yates Shuffle AlgorithmThe Fisher-Yates shuffle algorithm is used to randomly arrange entries.
This unbiased algorithm ensures that every possible permutation has an equal probability of being generated
and is widely used in statistics and computer science.
[1] Durstenfeld, R. (1964). "Algorithm 235: Random Permutation". Communications of the ACM, 7(7), 420.
[2] Fisher–Yates Shuffle, Wikipedia, https://en.wikipedia.org/wiki/Fisher-Yates_shuffle
UniPicker applies the following Weighted Winner Selection Method based on Key values.
Generate a random number (u) between 0 and 1 for each entry.
Calculate the Key value using the assigned random number (u) and the entry's weight (w).
Entries with higher weights are more likely to generate smaller Key values. The winning priority is determined by the Key values in ascending order.
Shuffle the draw info using the Fisher-Yates shuffle algorithm¹.
Efraimidis, P. S., & Spirakis, P. G. (2006). Weighted Random Sampling with a Reservoir.
Information Processing Letters, 97(5), 181–185.
4
1
3
9
UniPicker applies the following ball number seed draw logic.
* Assign first 10 digits(UniPicker random seed) after removing the decimal point.
* The ball number drawn on-site is used publicly.
* When sorting the entry info, each entry is sorted based on the assigned winning random number. the input ball number is an 'odd number', the entries are sorted in ascending order. the input ball number is an 'even number', the entries are sorted in descending order.
If multiple entrants have the same number, priority is given to the first registered entrant to avoid biases.
* This draw does not randomly shuffle the draw setting info.
This is a policy to determine the winner based on the sorting order of transparently disclosed entry numbers.
The basic Unipicker draw logic assigns each entry a random number to select winners. However, this method is not suitable for large-scale draws due to the CPU and memory limits of a PC
In a Mass Entry Winner Draw, each entry is given an entry number in order, and the winning numbers are drawn using computer-generated random numbers.
To ensure fair random numbers, the “1. Unfair Random Number Rejection Policy” is applied, and to efficiently check for duplicate winning numbers, the “2. Floyd’s Sampling Without Replacement Algorithm” is used.
(1) Assume that the computer generates 12 random numbers between 1 and 12.
(2) Total number of entries : 5
| Entry Number | Entry Info |
|---|---|
| No.1 | Liam |
| No.2 | Noah |
| No.3 | Emma |
| No.4 | Mia |
| No.5 | James |
Based on < Image 4>, when drawing one winner with computer random numbers, the winning number can be arranged as follows.
Example: If the computer creates a random number of 4, then entry #4 Noah wins. If it creates 8, then entry #3 Emma wins
If random numbers from 1 to 12 are used as they are, entries like Liam (11) and Noah (12) would have a higher chance of winning than others.
※ Win Chance for Each Entry
2 (1, 6, 11)
2 (2, 7, 12)
| Entry Number | Entry Info | Win Chance |
|---|---|---|
| No.1 | Liam | 3rd (1, 6, 11) |
| No.2 | Noah | 3rd (2, 7, 12) |
| No.3 | Emma | 2nd (3, 8) |
| No.4 | Mia | 2nd (4, 9) |
| No.5 | James | 2nd (5, 10) |
No.1 Liam → 2 (1, 6, 11)
No.2 Noah → 2 (2, 7, 12)
If the computer creates a random number of 11 or 12, it is ignored and a new one is made to keep the draw fair.
Only numbers within the valid range of entries are used, and the rest are rejected.
This is called the “Unfair Random Number Rejection Policy.”
Winning number = Computer Random number % Number of entries
( The remainder when dividing the computer random number by the number of entries )To prevent duplicate winning numbers, each time a number is drawn, the system must check whether it matches any of the previously drawn numbers.
If a duplicate is found, that number is skipped, a new random number is generated, and the check is repeated until a unique winning number appears.
However, if the number of winners is very large or duplicates occur often, this duplicate-checking process may repeat excessively.
To prevent this, the Mass Entry Winner Draw uses the “Floyd’s Sampling Without Replacement” algorithm.
Based on < Image 4>, when drawing three winners with computer random numbers, duplicates can be prevented as shown below.
< Image 5 > Example of Mass Entry Winner Draw with Multiple Winners
(1) First Darw
One entry number is drawn from entries No.1 ~ No.3※ Draw Result - Rand 11, Win number 2
| Win Number List |
|---|
| No.2 |
(2) Second Draw ( Duplicate occurred )
One entry number is drawn from entries No.1 ~ No.4※ Draw Result - Rand 2, Win number 2
| Win Number List |
|---|
| No.2, No.4 |
(3) Third Draw
One entry number is drawn from entries No.1 ~ No.5※ Draw Result - Rand 6, Win number 1
| Win Number List |
|---|
| No.2, No.4, No.1 |
With this logic, even if duplicate numbers appear, there is no need to generate new random numbers, making the process more efficient.
Entries #1 to #3 each get three draw chances, entry #4 gets two, and entry #5 gets one — which may seem unfair.
However, if a duplicate winner appears in the second draw, entry #4 is selected as the winning number.
By the third draw, the earlier numbers are more likely to overlap, giving entry #5 a higher chance of winning.
Thus, this logic effectively and fairly prevents duplicate draws.
In other words, this algorithm is designed so that earlier entries get their chances first but have a higher risk of being pushed out, while later entries join later but have a greater chance to replace others, resulting in an overall equal win probability for everyone.
※ Reference
Robert Floyd’s Tiny and Beautiful AlgorithmAfter selecting winners using the Mass Entry Winner Draw logic, the random number of the last winner is used as the seed to assign new random numbers to each winner. If the initial seed number entered for the draw is odd, the results are sorted in ascending order; if it is even, they are sorted in descending order to determine the final order.
Based on the assumption in < Image 5>, the order assignment proceeds as follows.
Assume that the initial seed value issued by the Unipicker Seed Generation Server is 161925012407392416.
| winner | Random Number |
|---|---|
| No.2 Noah | 2498216440435499 |
| No.4 Mia | 5390021712519228 |
| No.1 Liam | 1989048286806792 |
| Order | winner | Random Number |
|---|---|---|
| 1 | No.4 Mia | 5390021712519228 |
| 2 | No.2 Noah | 2498216440435499 |
| 3 | No.1 Liam | 1989048286806792 |
Since the seed value is even, the list is sorted in descending order by random numbers
※ If the seed value is odd, it is sorted in ascending order
Fair digital draw must be tamper-proof and capable of proving that they have been conducted without tampering.
Tampering with a drawing refers to the act of intentionally manipulating the results to favor a particular entrant, or manipulating the fair results after the drawing has been conducted.
* A file hash code is a unique value calculated for a file using a specific hash algorithm.
It changes if the file data is modified, making it useful for verifying the original file.
Digital draw using seeds can perfectly replay the drawing results. By inputting the seed value and original data used in the previous drawing to the UniPicker verification draw, the same draw results as the previous drawing can be confirmed. UniPicker can also be used to verify whether the seed value and data used in the previous draw are genuine. If a different seed value or manipulated input data is used for the actual draw, it will result in different draw results, and this can be considered a failure in verifying the draw results .
UniPicker is a reliable and fair draw software used by numerous public institutions, including courts and local governments. Using UniPicker can earn the trust of entries in the draw fairness, the most fair way to conduct a draw is through a 'public draw' using UniPicker. Notifying the entry of the UniPicker Public Record ID and draw date, and conducting a live YouTube broadcast or on-site public draw in accordance with the notified schedule is the best way to prevent complaints by disclosing the all draw process to the entries.