Experimental Study of 29 Polyhedral Dice Using Rolling Machine, OpenCV Analysis (markfickett.com)
enFi writes: All dice are slightly unfair; automating 3k rolls x 29 dice allows detailed exploration. For example: GameScience claims their d20s are fairest, and actually has the fairest die in the study. Chessex d20s are consistently mid-range and all favor the same numbers; Wiz Dice d20s are highly variable (some rival GameScience). Shape differences measurable with calipers account for some of the larger observed differences, but not everything. Read the details for graphs, a video of the Arduino-powered rolling machine, and an explanation of using OpenCV to sort die rolls.
(Disclaimer: I'm the author.)
(Disclaimer: I'm the author.)
It's sad to see so many misguided comments under such a nice nerdy article.
(a) More advanced pseudo-random algorithms like Mersenne Twister are perfectly good for almost anything but crypto uses. Even much simpler Linear Congruential Generators (multiply-modulo, or multiply-add-modulo) with good parameters are perfectly good enough for applications like emulating dice. The only tricky part is how to get the seed.
(b) Arduino has an intrinsic capability to get physically random bits as it has analog input pins. Floating pins will provide perfectly usable noise in the lowest bit of the A/D converter output. You probably would be able to influence the bit pattern if you had it under physical control and tried to produce suitable RF interference hard enough (not 100% sure of that, though); but we are still talking about friggin' D&D, right?
It's not the fall that kills you. It's the sudden stop at the end. -Douglas Adams
Leaving inputs floating on a digital device is usually a bad thing to do. It used to be that CMOS inputs left floating would cause huge current draws as they switched back and forth between 1 and 0 -- which is the exact operation that consumes the most current.
They now exist as a clear d10 with another clear d10 actually inside the first one; the outer one is 10s and the inner one is single digits.