在 Python 中生成两个彼此不接近的不同数字



我知道如何在特定范围内生成不同的随机数,但我想从两个彼此不接近的数字中选择一个随机数,并且它们之间存在我不想包含在生成过程中的数字。例如:我不希望在此命令中生成一个。

play = (random.randint(0, 2)), (random.randint(0, 2))

如果要选择的值数量很少,并且值是离散的(即不是"在 0 到 1 之间或介于 2 到 3 之间"(,最简单的方法是使用 random.choice ,它将选择提供的值之一,即 random.choice([0, 2])并不意味着"选择0和2之间的数字",而是"选择0或2"。

play = (random.choice([0, 2]), random.choice([0, 2]))
当然,您也可以

提供两个以上的值,这些值不一定是整数,因此您也可以使用此变体,它可能更清晰,也可能不更清晰:

play = random.choice([(0, 0), (0, 2), (2, 0), (2, 2)])

如果您还希望play的两个部分是不同的数字,则可以相应地修改:

play = random.choice([(0, 2), (2, 0)])

或者使用 random.sample 从给定总体中选择k不同的值:

play = random.sample([0, 2], 2)

第一步是检查两个值之间的差异,例如

diff = abs(play[0] - play[1])

这将产生正数的差值。如果要检查数字应该是静态值(if diff < 10(还是百分比(if diff < play[0] / 10 and diff < play[1] / 10(,则由您决定。

一旦你有了这个值,你可以暴力破解这些值(不是最好的,应该只在可能值的范围非常大并且必须获得另一个值的概率很低时使用。否则,请选择更安全的方法(.
另一种可能性是添加一个其他值(随机或非随机(,例如:

play[1] = (play[1] + random.randint(0, max_value)) % max_value

使用具有最大值的模数将确保您最终不会出现溢出或其他类似问题。

还有更多方法可以满足您的需求,这只是两个简单的例子。

最新更新