Can Python generate a random number that excludes a set of numbers, without using recursion?(Python 是否可以在不使用递归的情况下生成排除一组数字的随机数?)
问题描述
我查看了 Python Docs(我可能误解了),但我没有看到有在不调用递归函数的情况下执行此操作的方法(如下所示).
我想做的是生成一个随机值,其中不包括中间值.
I looked over Python Docs (I may have misunderstood), but I didn't see that there was a way to do this (look below) without calling a recursive function.
What I'd like to do is generate a random value which excludes values in the middle.
换句话说,
假设我希望 X
是一个不在其中的随机数范围(a - b, a + b)
我可以在第一次通过时这样做吗,
或
1.我是否必须不断生成一个数字,
2. 检查是否在range()
,
3.洗涮涮涮?
In other words,
Let's imagine I wanted X
to be a random number that's not in
range(a - b, a + b)
Can I do this on the first pass,
or
1. Do I have to constantly generate a number,
2. Check if in range()
,
3. Wash rinse ?
至于我为什么不想写递归函数,
1.感觉"我不应该这样做
2. 我这样做的一组数字实际上最终可能会非常大,并且
...我听说堆栈溢出很糟糕,我可能只是在这样做时过于谨慎.
As for why I don't wish to write a recursive function,
1. it 'feels like' I should not have to
2. the set of numbers I'm doing this for could actually end up being quite large, and
... I hear stack overflows are bad, and I might just be being overly cautious in doing this.
我确信有一种很好的、Pythonic、非递归的方式来做这件事.
I'm sure that there's a nice, Pythonic, non-recursive way to do it.
推荐答案
使用random.choice().在此示例中,a 是您的下限,b 和 c 之间的范围被跳过,d 是您的上限.
Use random.choice(). In this example, a is your lower bound, the range between b and c is skipped and d is your upper bound.
import random
numbers = range(a,b) + range(c,d)
r = random.choice(numbers)
这篇关于Python 是否可以在不使用递归的情况下生成排除一组数字的随机数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python 是否可以在不使用递归的情况下生成排除一组数字的随机数?
基础教程推荐
- 用于分类数据的跳跃记号标签 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 筛选NumPy数组 2022-01-01