如何在python中生成但排除某个数字整数中的某个数字

时间:2014-02-27 09:44:08

标签: python random

我只想知道如何生成某个数字整数,但也不包括出现在该数字中的某个数字。

例如,如果我要在3位数字上排除数字0,则无论生成多少次,都不会出现任何0。结果的例子是591,292,182,111,181,738等。

如果这是一个功能,例如

def randomIntWithNDigits(n):

,这将非常有帮助。

3 个答案:

答案 0 :(得分:4)

这是一个解决方案,使用字符串中随机选择的字符,其中包含除了您不想要的数字之外的每个数字。

import random

def randomIntWithNDigits(n):
    numbers = '12456789'
    result = ''
    for i in range(0,n):
        result+= random.choice(numbers)
    return result

答案 1 :(得分:0)

这很容易。例如,排除0:

def randomIntWithNDigits(n):
    allowedDigits = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    randInts = []
    for i in range(n):
        randInts.append(random.sample(allowedDigits, 1))
    return int(''.join(map(str, randInts)))

如果需要排除其他一些数字,您只需更改allowedDigits。

答案 2 :(得分:-1)

import random

def generaterandom(n):
    while True:
        rand = random.randrange(0,n)
        if not '3' in rand.__str__():
            return rand;

print generaterandom(10)