Leam Hall wrote:

> Is this a good way to test if random numeric output? It seems to work
> under Python 2.6 and 3.6 but that doesn't make it 'good'.
> 
> ###  Code
> import random
> 
> def my_thing():
>    """ Return a random number from 1-6
>    >>> 0 < my_thing() <=6
>    True
>    >>> 6 < my_thing()
>    False
>    """

These are fine as illustrative tests that demonstrate how my_thing() is 
used. 

If you want to test the "randomness" -- that's hard. You could run more 
often

all(1 <= mything() <= 6 for _ in range(1000))

but that doesn't guarantee that the 1001st attempt is outside the specified 
range. You could have a look at the distribution

>>> c = Counter(my_thing() for _ in range(1000))
>>> set(c) == set(range(1, 7))
True

but that *should* occasionally fail even though in practice

>>> dict(c) == {3: 1000}
True

would be a strong indication that something is broken rather than that you 
are really lucky...


-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to