This might be OTF as the solution might be Delphi or something else
I need to obtain a random number (1 to 1000) every day for 1000 days for a public giveaway (rewards / prizes etc)
It will be broadcast live via a Youtube livesteam
Ive been asked to come up with a way to draw the number that is TRUSTABLE by the audience.
The audience is the general public and they wont care about the intricacies about how random some Delphi random number generator is - as any program will be suspiscious as it could have been tampered with to skew the results.
Something simple would work such as an Excel random number or Google has a web page that generates a random number. However, many of these come with the possibility that people could still say the Excel or Googl epage was emulated with a program so the results cant be trusted.
We have loads of ideas, but dont think we have the right solution yet
Some ideas to assist with the integrity / trustability of the draw
Have a CPA (Certified Practising Accountant) present to verify the draw. Not sure if we can arrange this in time and is not a good solution for doing every day for 1000 times due to cost
Draw from a barrel / hat etc. A very easy solution but can still draw complaints because it would be easy to control it without someone there to verify the results (piece of paper palmed up the sleeve etc)
Use data from a trusted source that is fairly random and frozen for a time period such as numbers pulled from the MD5 of Microsofts closing price on NASDAQ
Do you have any ideas - Delphi or otherwise - that would help to improve the TRUSTABITY of a live draw via Youtube livestream ? Ive been asked to do a computer program if possible, which obviously makes the trustability very difficult so pulling from verifable, point in time and fairly random data was my best idea.
Iām sorry to be the bearer of bad news, but I think that you have an impossible mission.
Personally, I donāt think that thereās any way to trust the ārandomā numbers from a computer that you donāt have trust in - the potential for subterfuge is just too great.
I was looking into pseudo random number generators a while ago and I came across an article that put forward an argument that even adding entropy from an untrusted source in an otherwise trusted system could lead to a reduction in randomness of the numbers generated - IMHO, mostly theoretical, but still plausible.
A mechanical system with balls in a clear perspex spehere and a person reaching in to grab a ball randomly might be about the best that you could do. The person doing the draw could show that they had no balls hidden behind their hand before reaching into the sphere - no sleeves of course. They could also read off the current stock prices for a number of companies to prove that the video wasnāt pre-recorded.
Even still, considering that magicians can ādemonstrateā people being cut in half in front of a live audience, thereās probably still potential for subterfugeā¦
Thinking about this some more, you possibly could do it with a computer - building on your idea of using a hash of a price from the stock market.
If you had a publicly verifiable source of somewhat random numbers, such as a prices of a number of stocks (a single stock price wouldnāt provide enough entropy) you could use a program to generate the hash of all of them in a consistent manner to get a result. If you made the program open source, anyone that doubted the system could either verify it themselves, or pay someone with the right skills to verify that it was working as described. Obviously such a system wouldnāt be suitable for generating random numbers for encryption, but thatās not what youāre trying to doā¦
How random do you want the numbers?
e.g. do you want to accept the same number if itās generated in more than 1 day?
Thus potentially allowing someone to get more than 1 prize?
Is your third idea not workable if you adjust it a little?
Take say the first decimal digit of the top 3 closing prices on the ASX as found on the Top5 tab of https://www2.asx.com.au/
Today, this gives you a random number of 776. Or use the second decimal if you think this is more ārandomā. This gives 172.
You could write a screen scraper program to automate this yet the result is verifiable by anyone and arguably as random as you probably need. Somebody would have to predict the top 3 share gains and their closing prices each day to beat the system.
Ideally a number that was drawn in a prior day would be excluded, but I can deal with that manually by repeating the draw until a fresh number is drawn.
The process can be adjusted over time, so I can still use a system that works well in the early days and in replace it with a different system in later stages
TRNG chips - these will be too difficult to explain and be trustable to a non technical user. It still has the issue of the process being hackable by using slight of hand.
So far, I am leaning towards prices from a market closing but would need to run some back testing or a system tweak to verify there is no bias towards any numbers or individual digits.
The closing could be end of day, or even end of minute (so it could be done at any time), so long as the values were coming from a trustable source
I like the idea of reading out the current price of a stock or a few other interesting things to help verify that the event is live and not pre-recorded.
Thanks for the ideas everyone, I expect more will come through.
I have been developing software for lottery and security printing for many years now.
There are different ways of seeding to make the random numbers unique.
Whatever you do there will always be a few who wonāt believe the result was random.
The best way may be to get the input/s from the audience/s to generate the final number.