Python 生成从范围中排除一个数字的随机数

Python 生成从范围中排除一个数字的随机数,python,random,python-2.x,Python,Random,Python 2.x,我正在生成一个从1到10范围内的数字,但想将数字2从该范围中排除,我不知道如何执行此操作 这就是我目前所拥有的 python文件 因此,要进行四舍五入:我想生成介于1到10之间的数字,并排除数字2。您可以使用: 一个明显且易于解释的方法是使用您提到的函数,通过while循环排除2,并仅绘制数字,直到2未被拾取为止。这仍然是非常低效的,但是您可以通过基本编程概念来解决这一问题 更直接的方法是更精确地定义列表,即不使用2并使用random.choice函数: import random print(

我正在生成一个从1到10范围内的数字,但想将数字2从该范围中排除,我不知道如何执行此操作

这就是我目前所拥有的

python文件

因此,要进行四舍五入:我想生成介于1到10之间的数字,并排除数字2。

您可以使用:


一个明显且易于解释的方法是使用您提到的函数,通过while循环排除2,并仅绘制数字,直到2未被拾取为止。这仍然是非常低效的,但是您可以通过基本编程概念来解决这一问题

更直接的方法是更精确地定义列表,即不使用2并使用random.choice函数:

import random
print(random.choice([1, 3, 4, 5, 6, 7, 8, 9, 10]))

您可以使用while排除数字2

move =  random.randint(1, 10)

while move == 2:
    move = random.randint(1, 10)

此代码将生成随机数,直到它不再是2

您可以生成一个从1到9的随机值,如果它大于或等于2,则将其移位1

value =  random.randint(1, 9)

move = value if value < 2 else value + 1

或者做另一种调节方式,如Olivier的回答:

value =  random.randint(1, 9)
move = 10 if move==2 else move

那么move永远不会是2。

Olivier的答案对于这个特定的问题可能更好,但如果规则像所有小于100的素数一样复杂,那么就不能很好地扩展。在这种情况下,选择是更好的,好的选择,我想:-如果你这样做,你的分布是不均匀的。3比任何其他数字更可能生成。看到我的答案了吗?@OlivierMelançon现在?是的,它是有效的,我没有想过这样做,嗯done@OlivierMelançon Happy it work:-,:D,可能是重复的。虽然这个方法可行,但总有一个很小的可能性,那就是生成您的号码需要很长时间。
value =  random.randint(1, 9)

move = value if value < 2 else value + 1
value =  random.randint(1, 9)

move = value if value != 2 else 10
value =  random.randint(1, 9)
move = 10 if move==2 else move