Do you mean I should have used :
if (uniform(0,10) == 7) {
instead ?

TL;DR version:
Actually, the equivalent would be uniform(0, 9), but yes, that'd be the preferable approach there. (also note https://github.com/jbrains/trivia/blob/7b473f9fbbd125b0ab1c2e82582b8a8c414ca501/d/source/trivia.d#L19 too should be changed to `uniform(1, 6)` which will give numbers in the range [1 .. 6) ... that's what you want, right?)

Indeed, your're right, thanks.

I used the modulo trick for multiple reasons :
* I ported the java source, which used the basic java.util.random's Random.nextInt() then a modulo to cap the output. * D's std.random had me scratching my head for minutes; like : "What is this mess ? And where is the simple rand() function ?" * I didn't care about speed or uniformness of the generated numbers. * While in the code retreat event, we tried to get a "golden master" ( the output of the program ), to be able to test that refactoring didn't change anything. One trick is to set the seed of the random number generator to guarantee we always got the same dice rolls. And the std.random complexity didn't help to choose the right method.

That being said, there are worse things in game.d : I introduced new bugs in this already buggy program, by using D's array slices.
https://github.com/jbrains/trivia/blob/7b473f9fbbd125b0ab1c2e82582b8a8c414ca501/d/source/game.d#L101

Lastly, this tiny contribution is just a drop in the ocean of "spreading the world about D".

Reply via email to