python - 除了前面写在列表中的数字之外的随机数

标签 python algorithm random

我知道如何从 7 到 14 中获取随机数,但是是否也可以以某种方式从 7 到 14 中获取随机数除了之前写的列表中的一些数字?

例子:

Forbidden = [12, 13, 8, 7]
a = randint(7, 14) 

a 应该是一个随机数,但不是 Forbidden 中写的数字。

编辑:感谢您的建议,使用 while 循环或 .choice 实际上解决了我的问题。但最后@user2357112 是对的,显然黑名单想法初学者陷阱,洗牌解决了我的问题。

最佳答案

您知道真正的纸牌游戏如何阻止您抽取已经抽出的牌吗?它不涉及绘制卡的黑名单。有一副牌,你可以洗牌。

在你的程序中做同样的事情。与其尝试维护抽取卡片的黑名单,不如在程序开始时洗牌并从牌组中抽取卡片:

import random

deck = some_list
random.shuffle(deck)

# when you want to draw a card
card = deck.pop()

关于python - 除了前面写在列表中的数字之外的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50842285/

相关文章:

python - 将作业提交到异步事件循环

c++ - 如何在归并排序中找到低点和高点

查找数组内间隔的算法

opencv - 根据任意连续概率密度生成样本

Python random.sample 与带有 IF 语句的 random.choice 相同

python - 用于验证日期范围的 openERP 函数

python - Pandas 从具有名称列表的列中获取最常见的名称

python - 'NoneType' 对象没有属性 'add'

algorithm - 我必须用 BFS 实现邻接矩阵吗?

python - 生成给定范围内的随机时间戳?