我正在编写此代码以生成一个txt文件,该文件总共应有600个字母,仅由A(50%)和B(50%)组成,随机分布。我应该怎么做,我是编码新手,请帮忙。
q=[A, B]
popsize=500
def gen_pop(A):
population=[]
B=A
while len(population)<popsize:
random.shuffle(B)
print A
print B
gen_pop(q)
创建一个包含 300 个A
和 300 个的列表,B
用 random.shuffle
进行随机播放:
>>> from random import shuffle
>>> mylist = ['A'] * 300 + ['B'] * 300
>>> shuffle(mylist)
>>> mylist
['B', 'B', 'A', 'B', 'A', 'A', ... 'A', 'B', 'A']
最佳答案可能取决于您希望的分布是什么。
如果你想让你的一半字母A
,一半是B
的,请使用jabaldoneodo答案中的技术,先构建序列,然后打乱它:
import random
result = ["A"]*300 + ["B"]*300
random.shuffle(result)
另一方面,如果您希望每个值都独立于其他值进行选择,则有 50% 的几率被A
,50% 的几率被B
,提前选择每个值的数量将是不合适的。相反,您可以使用random.choice
从列表理解中的字母表中挑选:
import random
alphabet = "AB"
result = [random.choice(alphabet) for _ in range(600)]
使用此方法,A
s(和 B
s,就此而言)的数量将呈正态分布,平均值为 300。同样的技术也适用于较大的字母表。
生成一个 300 A 和 300 B 的数组,然后使用算法对其进行洗牌。