创建 "A" 个字母和"B"字母的填充,每个字母的频率为 50%



我正在编写此代码以生成一个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 个的列表,Brandom.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 的数组,然后使用算法对其进行洗牌。

最新更新