19 comments

[ 4.2 ms ] story [ 41.2 ms ] thread
Wow, that is terrible if you won in the original draw.
Yeah I feel terrible for all the people that were told they won just to have their dreams yanked out from under them. I wish the government could do something to make it up to them. Once they notify people that they've won they should have to make good on it. If it were up to me all the people that won by error would be allowed their visas, and another draw would be made for the remaining entrants. Then the remaining candidates would have a better chance than the original draw. Sure we'd have double the lottery immigrants coming over this year but this seems like the closest thing to fair to me considering the mistake that's already been made.
My initial thought is to agree. But what would we do in the situation where a computer error caused it to be weighted toward something other than date of application? What if it were 90% people with last names that start with "R"? Or 90% males?
Sure, "What if XYZ?" But that's not what happened. If the algorithm demonstrated a bias for or against a protected class (nationality, gender, etc.), then one could argue against honoring results. Otherwise, be fair to the people who "won." In most cases, I would argue that revoking visas that have already been awarded would cause an unacceptable amount of human suffering. The course of action with the least harm to applicants in specific and society in general is running a second lottery.
Wouldn't they need to pass some kind of legislation to make such an exception?
Yes, which makes it basically impossible. The House has voted more than once to end the diversity visa entirely.
(comment deleted)
> U.S. law requires that Diversity Immigrant visas be made available through a strictly random process. A computer programming error resulted in a selection that was not truly random.

Computer generated numbers are never truly random. At what point is it "random enough"?

Many computers have physical entropy sources, so they can create truly random numbers. http://www.cryptography.com/public/pdf/IntelRNG.pdf
I don't think it's really necessary to use true quantum randomness. A good-enough-for-government-work definition of a random drawing is that every applicant has an equal chance (to N decimal places) of being chosen at the time they submit their application.

For this, pseudorandom is good enough. Sure, it's completely deterministic which applications will get chosen once you've chosen your algorithm and seed. But how do you choose your seed? Probably from the clock at the time you run the program. And what determines the precise time you run the program? Why, a bunch of neural signals going around in the head of the dude whose job it is to press "enter" on the greencard lottery program.

There are some purposes for which random is better than pseudorandom, this ain't one of 'em.

I can't find anything in a quick search, but I recall seeing a report ~15 years ago on what was considered sufficiently random for lotteries. It was kind of tiered, most low-level stuff was based on pseudo with a seed based on dice throw (i.e. they rolled something like 10d10 under specific conditions, then used that as seed) with some higher up stuff being die or ball pick. This was before having entropy generators (like an over level amp hooked to a A/D) being commonplace. Not sure what they like now, but I'm sure political/legal argued about it, yelled at each other and eventually settled on what was "random enough" fairly arbitrarily but sufficiently enough that no one complains. There's probably enough stuff around that needs to be "legally random" to have laws about it though.
A bit more detail on the non-randomness:

But when the numbers were drawn, it turned about that 90 percent of the winners came from applications that were submitted on just the first two days of a 30-day registration period.

This brings up a question: is the time of the submission a random variable ? If yes - assuming the submitters did not have the prior knowledge - then I think the results should be random even if we were just to select X consecutive entries at some day ?
They should (in advance) post the exact algorithm by which they choose the pseudorandom results, and (on lottery day) post a truly-random seed selected by a process performed in public or verified by independent observers. Then anyone would be able to verify the lottery results after the fact.
I'd really like to see an NTSB/FAA-style post-mortem analysis of bugs like these, along with suggested process improvements that will prevent such errors from occurring in the future.

Our industry could really benefit from a body of analysis on programming bugs that rivaled the body of analysis we have on plane crashes.