Hacker News new | ask | show | jobs
by Waterluvian 1775 days ago
Anyone think they can explain this in the source code?

function ziggurat() { return ((Math.random() + Math.random() + Math.random() + Math.random() + Math.random() + Math.random()) - 3) / 3; }

https://github.com/vikrum/kidpix/blob/9385acf5b3f57cdc8c5b3f...

2 comments

Looks like a way to purposefully create a biased (center-weighted) random number generator out of multiple calls.
Mathematically is the sum of six Math.random() any different than (Math.random() * 6)?
Yep, the sum of six Math.random() will start to look a bit like a normal distribution, while Math.random()*6 will stay flat.

Even crazier: the sum of six (Math.random()>.5)?0:1 will also look a bit like a normal distribution, rather than just 0 50% of the time and 6 50% of the time.

Central Limit Theorem eats distributions of all shapes and sizes and shits gaussians. That's why you see normal distributions everywhere.

Ohh okay. I see it now.

This is like how two D6 dice roll differently than a D12?

Yeah, it will biased towards the center of the range rather than uniformly distributed