如何在 python 中每次以不同的顺序随机执行代码



所以这个问题是基于我正在做的一个随机项目。基本上这个项目里面有很多较小的脚本,我希望能够做的是随机播放或只播放有时。

所以这里有一个例子来说明我的意思(因为如果我发布所有脚本,它会变得混乱(。假设我有 5 个脚本,它们都是更大项目的一部分。像这样的东西。

Project 1 which has 5 scripts inside which are:
Script 1
Script 2
Script 3
Script 4 
Script 5

所以我希望能够做的是以不同的顺序随机播放这些脚本。因此,对于第一次运行,我希望播放脚本 1,然后播放脚本 2,然后播放脚本 5,但跳过脚本 3 和 4。对于下一次运行,我希望能够播放脚本 3 和脚本 5,但跳过其他脚本。这可能吗?任何建议不胜感激。谢谢你们的时间

我能想到的一种方法是随机生成一个排列序列:

files=['script1.py','script2.py','script3.py']
n=len(files)
sequence=list(np.random.permutation(n)) #generate a random permuation

要跳过某些文件:

skip=np.random.randint(n)
for i in range(skip):
num_to_remove=np.random.randint(n)
if(num_to_remove in sequence):
sequence.remove(num_to_remove)

执行剩余的

for i in sequence:
exec(open(files[i]).read()) #execute file

您当然可以随机选择随机数量的脚本,例如,假设您想在25个脚本之间运行 10 次,那么您只需执行以下操作:

import random
scripts = ['script1', 'script2', 'script3', 'script4', 'script5']
number_of_runs = 10
for run in range(number_of_runs):
for script in random.sample(scripts, k=random.randint(2, 5)):
print("Run {}: {}".format(run, script))
# execute script

创建一个字典,其中键是整数,值是脚本的名称。 然后使用 random.randint(1, number_of_scripts( 获取字典的随机索引,然后运行 os.system(dict[random.randint(1, number_of_scripts(-1](

最新更新