2016-09-16 3 views
0

문자 C (예 : C = [ 'A', 'B', 'C', 'D']) 목록에서 임의의 문자열을 생성하고 싶습니다. 이 랜덤 문자열은 길이 N (예 : N = 32)을 가져야합니다. 모든 성격은 똑같이 자주 발생해야합니다 - 그 예에서 8 번.동일 문자로 고정 길이의 임의의 문자열 생성

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

아니면 더 좋은 방법이있다 :

어떻게 각 문자는 여기에 동등하게 자주 발생 구현할 수있다?

+1

나는 아무것도 볼 네가하는 방식에 문제가있어. – zvone

+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) 
관련 문제