好吧,我有个问题。我正在创建一个脚本,从提供的名称列表中随机获取一个名称,并在5个列表中生成它们。我知道你可以使用命令
items = ['names','go','here']
rand_item = items[random.randrange(len(items))]
如果我没搞错的话,这应该是从列表中随机抽取一个项目。虽然如果我错了,请纠正我,但我的问题是如何让它产生,比如一个5个名字的列表,如下所示
^{pr2}$如果我连续运行5天,它不会以相同的顺序重复名称,有没有办法做到这一点?在
我很感激你能给我的任何帮助,或者我现有代码中的任何错误。在
编辑: 我的脚本的一般用途是每周5天,每天为一组用户生成任务分配。我要找的是在5个不同的旋转中生成这些名称的方法。在
我为你的困惑道歉。虽然一些返回的答案会有所帮助。在
编辑2: 好吧,我想我基本上已经有了我想要的东西,谢谢你Markus Meskanen&mescalinum,我用了你们两个的代码来解决这个问题。我非常感激。下面是我现在使用的代码。在
import random
items = ['items', 'go', 'in', 'this', 'string']
rand_item = random.sample(items, 5)
for item in random.sample(items, 5):
print item
在你的问题中,如果你只是想洗牌项目或选择一个子集。据我所知你想要第二个案子。在
您可以使用
random.sample
,从python中的列表中获取给定数量的随机项。如果我想从5个字母的列表中随机抽取3个项目,我会这样做:注意,字母不一定按相同的顺序返回-
'b'
在'a'
之前返回,尽管在原始列表中不是这样。在关于你问题的第二部分,防止它产生 以相同的字母顺序,您可以将每个新生成的子列表追加到一个文件中,在脚本执行期间检索该文件并生成一个新的子列表,直到它与以前生成的每个子列表不同为止。在
您可以使用^{} 只获取一个项目:
现在只需重复这5次(a for循环!)在
如果您希望名称只是随机顺序,请使用^{} 每次都得到不同的结果。在
^{} 适合于随机选择元素。在
但是,如果要随机选择多个元素而不重复,可以使用^{} :
对于最后一个问题,您应该相信(伪)随机生成器不会在连续两天内给出相同的序列。随机种子在默认情况下是用当前时间初始化的,因此不太可能在连续两天观察到相同的序列,尽管这并非不可能,尤其是在项目数量很少的情况下。在
如果您确实需要避免这种情况,请将最后一个序列保存到一个文件中,并在洗牌之前加载它,并继续洗牌,直到它给出不同的顺序。在
相关问题 更多 >
编程相关推荐