On 11/23/2016 11:17 AM, Thomas Grops wrote:
I need a way of generating a random number but there is a catch:

I don't want to include certain numbers, is this possible?

random.randint(1,100) works as it will randomly pick numbers between 1 and 100 
but say i don't want 48 to come out is there a way of doing this. It needs to 
be an integer too so not a list unless there is a way to convert list to int

Many Thanks Tom


Here's a possible generic approach:

#  Come up with a better name for this function
def randx(lo, hi, nw):  #  nw is a list of not-wanted ints
    while True:
        n = random.randint(lo, hi)
        if n not in nw:
            return n

Use it the same way as randint(), plus a list of the not-wanted values.
Short example:

-------
nw = [1, 3, 5, 7, 9]  #  Odd numbers out
for i in range(10):
    print(randx(1, 10, nw), end=' ')
print()
-------

Here's the results I got for 3 runs...

4 4 4 8 10 6 8 2 4 8
8 4 2 4 6 8 2 4 8 8
10 6 6 4 4 4 8 2 8 4

Of course, the not-wanted list can be a single int, or even empty.

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

Reply via email to