从具有相同出现的给定字符生成固定长度的随机字符串

时间:2016-09-16 17:21:04

标签: python random fixed

我想从字符C列表中生成随机字符串(例如C = ['A','B','C','D'])。该随机串应具有长度N(例如N = 32)。每个角色应该经常发生 - 在那个例子中8次。

如何实现每个角色在此处经常出现:

''.join(random.choice(C) for i in range(N))

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您使用random.choice,我认为您无法保证以相同的频率挑选每个项目。每种选择都是同样可能的,这不是一回事。

执行此操作的最佳方法是维护一个字符列表并将其随机播放......

characters = C * 8
random.shuffle(characters)
print(''.join(characters))

或者,如果你想要一堆它们:

def get_random_strings(characters, count, N):
    """Yield `N` strings that contain each character in `characters` `count` times."""
    characters = list(characters) * count
    for _ in xrange(N):
        random.shuffle(characters)
        yield ''.join(characters)