On Sat, Mar 19, 2016 at 04:05:58PM +1100, Ben Finney wrote: > import random > > def roll_die(num_sides, rng=None): > """ Return a result from a random die of `num_sides` sides. > > :param num_sides: The number of sides on the die. > :param rng: An instance of `random.Random`, the random > number generator to use. > Default: the `random.random` instance. > :return: The integer result from the die roll. > > The die is defined to have equal-probability faces, numbered > from 1 to `num_sides`. > > """ > if rng is None: > rng = random.random
Typo: you want rng = random.randint. > result = rng.randint(1, num_sides) And here you just want result = rng(1, num_sides). Otherwise you're trying to call random.randint.randint. > > And I do not see how I can test for an appropriate "randomness" to the > > numbers the function generates without to a lot of iterations, > > That's the thing about randomness. By definition, you can't determine it > :-) http://dilbert.com/strip/2001-10-25 But all joking aside, Python's pseudo-random number generator is one of the best in the world, the Mersenne Twister. For non-cryptographical purposes, it is as random as anything you are likely to need. https://en.wikipedia.org/wiki/Mersenne_Twister It passes all, or most, of the stringent "Diehard" and other tests for randomness: https://en.wikipedia.org/wiki/Diehard_tests -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor