通过调用
random.choice()
反复地,您可以有效地选择
with replacement
。这意味着您可能会在循环的不同行程中选择同一文件两次。
尝试
random.sample()
而是:
for to_copy in random.sample(files, int(len(files)*.1)):
shutil.copy(...)
考虑此计划:
import random
seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for _ in range(5):
i = random.choice(seq)
print(i, end=' ')
print()
for i in random.sample(seq, 5):
print(i, end=' ')
print()
以下是该程序的两次运行:
$ python x.py
g f e c b
c j b a d
$ python x.py
c e a a e
j f e a i
请注意,在第二次运行的第一行中
随机的选项()
随机选择的
a
两次和
e
两次如果这些是文件名,那么似乎只复制了3个文件。事实上,执行了五个拷贝,但多余的拷贝不会添加到文件计数中。当然,重复相同选择的数量是随机的,这会导致您看到的不一致行为。
另一方面,第二行来自
随机的示例()
不会有重复的元素,因为
随机的示例()
选择
无需更换。