Michael Lorton
Michael Lorton

Reputation: 44386

Public source of randomness

I want to set up "public lottery", in which everyone can see the selection is random and fair. If I only needed one bit, I would use, for example, the LSB of the closing Dow Jones index for that day. The problem is, I need 32 bits. I need a source that is:

I suppose I could just pick 32 stocks or stock-indices and use the LSB of each, that would be at least difficult to manipulate, and run them through some hash to eliminate any bias toward 0, but that doesn't really qualify as "simple". Other thoughts: some feed of meteorological or seismological data. That would be more difficult to manipulate (much easier to buy a share of stock than to cause an earthquake) but harder to authenticate (since there aren't armies of auditors watching weather data).

Any suggestions?

Upvotes: 6

Views: 324

Answers (5)

TakenItEasy
TakenItEasy

Reputation: 1

Separate the non deterministic from the random use a third party service that streams random number sets with a sn assigned to each set.

you set up the number of bits and the number of digits in sn.

Now it streams in random sets with assigned sn in a loop the size of your sn. Save it and you get a batch set of numbers that you put out for public record

Now you can chose a smaller number that doesn't need to be random, just non deterministic to pick the single set of numbers

Upvotes: 0

finnw
finnw

Reputation: 48619

I would take a large set of unrelated inputs. You could include some or all of these:

  • Stock prices (preferably from multiple locations, e.g. Last digit of Dow Jones + last digit of FTSE)
  • Last digit of the reading from a publicly-visible digital thermometer (easy to find in large cities)
  • The date
  • MD5 sum of the current google.com logo image
  • Name of top-billed guest on today's episode of <insert name of TV talk show here>
  • Other public lotteries

Concatenate all of these into one large string and apply a cryptographic hash function to it.

The hash will not increase the total entropy, but what it will do is make the output harder to manipulate (because the attacker would need to manipulate many inputs simultaneously.)

Now just take the first 32 bits of the hash.

Upvotes: 0

robbat2
robbat2

Reputation: 1224

Look at the XKCD GeoHashing algorithm. MD5(Date, Dow Jones Opening)

Depends how "simple" you want.

Upvotes: 0

Steven Smethurst
Steven Smethurst

Reputation: 4614

Check out http://www.random.org/ They have a section for Third-Party Draw Service

The Third-Party Draw Service is useful for people who operate raffles, sweepstakes, promotional giveaways and other lottery type services professionally. In a similar fashion to a certified official, RANDOM.ORG acts as an unbiased third party who conducts the drawings in a manner that is guaranteed to be fair and truly random. The drawings are made using true randomness that comes from atmospheric noise, which for many purposes is better than the pseudo-random number algorithms typically used in computer programs.

Check out the Public Records for details about recent drawings held with the service.

This sounds like what you are looking for, but you would end up having to rely on random.org for the numbers.

Upvotes: 1

PhilMacKay
PhilMacKay

Reputation: 915

The part "visible to the public throughout the world" is the trickiest part in my opinion.

An excellent source of really random numbers is the noise on a webcam (or any other CCD camera). This noise is caused by quantum fluctuation of electron temperature on the CCD plate, so it's truly random.

You could use a picture from a publicly available webcam, but it's hard to find one with a closed shutter... You could set one up and make it available yourself, or you could use one that monitors some meteorological event and subtract a time-averaged image every day.

I hope this is simple enough!

Upvotes: 0

Related Questions