1

我正在编写此代码以生成一个 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)
4

3 回答 3

4

最佳答案可能取决于您希望您的发行版是什么。

如果您想要一半的字母是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)]

使用这种方法,As(和Bs,就此而言)的数量将呈正态分布,平均值为 300。同样的技术也适用于较大的字母表。

于 2013-10-04T10:38:54.527 回答
4

创建一个 300A和 300B的列表,并使用以下命令对其进行随机播放random.shuffle

>>> from random import shuffle
>>> mylist = ['A'] * 300 + ['B'] * 300
>>> shuffle(mylist)
>>> mylist
 ['B', 'B', 'A', 'B', 'A', 'A', ... 'A', 'B', 'A']
于 2013-10-04T10:05:48.493 回答
2

Generate an array of 300 A's and 300 B's, and then shuffle it using an algorithm.

于 2013-10-04T09:55:40.860 回答