Log in

No account? Create an account
color cycle (slow)

Kistaro Windrider, Reptillian Situation Assessor

Unfortunately, I Really Am That Nerdy

Previous Entry Share Next Entry
Why Multi-Level-Marketing Schemes Can't Work
color cycle (slow)
After much agony and discovering exactly why you can't interrupt() threads in an Applet, I present to you

The MLMulator, an applet that numerically models a queue-style multi-level-marketing scam, such as http://www.freeipods.com (to which the default settings have been tweaked). This is the sort where you pay your money (or sell your e-mail address to spammers) and wait in line. Once the money accumulates to a certain level, the first person in line gets the whatever. But that requires many more people to join the line to get bonuses to everybody who joined the line to get that person's item...

Well, you wind up running out of people. The MLMulator will frequently tell you that you'll never get your iPod, or whatever, because the Earth's population simply isn't large enough... It uses an Euler approximation to a logistic growth model, to emulate how you may start telling people already waiting for their prizes. It makes a lot of assumptions in favor of the scheme- and look at the numbers that come out...

So in conclusion: If any of y'all see someone asking about freeipods.com, please point them to the MLMulator. Its default settings are a very polite estimate to their situation- and the default number of people in line is definitely low. But tacking on a zero seems to make the program say that it'll never happen...imagine that.

Full description, applet, information, and source code availible at http://students.cec.wustl.edu/~abn1/mlmulator.html

  • 1
Ehh... I broke it. Defaults for everything but position in line and max population - 2 000 000 for the first and 6 000 000 000 for the second. Makes it go wonky. The Day number scrolls upwards very quickly, looking like it's counting seconds and fractions of seconds (it's not, quite). The number in line is 5.999..E9 (repeating 9s), and then it says "waiting for 6.0E9." Decreasing the position by 1 yields a "normal" numerical answer, increasing by one yields a "never."

Wait. I found the balance point, didn't I? It's the point where it's effectively never, because tracking down that one last person to sign up would get you your prize, but the amount of time it would take to do so is pretty much equal to infinity, isn't it? Which is why it's scrolling days up - working through the numbers, waiting for that last person to show up.

Hee. Sent the link to someone I know with the Ipod link in his profile, and will probably pass it on to people on a forum or two.

That's exactly what's going on. A logistic curve approaches the carrying capacity as a limit as t → ∞, but no finite value ever quite hits the capacity. This is an Euler approximation, because it seemed the most appropriate method of getting a number: calculate what dP/dt is (the change in population over time) for each day, add that to the total, and go on.

And when you have 5,999,999,999.9... people, that derivative is a decimal smaller than the precision of the double holding the value of the number of people currently in line. When it's added in, it's completely discarded in 48-bit rounding, presuming the program holds the value in the register- otherwise, it's very completely discarded in 32-bit rounding.

Mathematically, of course, "infinite time" is indeed the correct answer, if you don't mind fractional people.

So yes, you found the point where you need exactly as many people as there are in the world. It's infinite time at that point. But if you need even one less person, it's finite, and one more and even infinity won't do what you want...

  • 1