나올 수 있는 모든 확률
조회수 639회
안녕하세요. 파이썬으로 구현을 원하는데요.
배열 길이가 10까지 있다고 하고 배열 안에는 0또는 1 두개가 있습니다. 여기서 1은 4개가 있고 0은 6개가 있다고 할때 이걸로 만들 수 있는 모든 배열을 만드는 걸 구현해보고싶습니다.
ex) [1,1,1,1,0,0,0,0,0,0] [1,1,1,0,1,0,0,0,0,0,] [1,1,1,0,0,1,0,0,0,0] ~~~ [0,0,0,0,0,0,1,1,1,1]
도움을 부탁드리고싶습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
기본 모듈인 itertools 모듈에 순열이 구현되어 있습니다.
In [1]: import itertools as it In [2]: L = [1,1,0,0] In [3]: set(it.permutations(L)) Out[3]: {(0, 0, 1, 1), (0, 1, 0, 1), (0, 1, 1, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 1, 0, 0)}
-
def comb(m, n, d=0): # print('>'*d, m, n) if n == 0: return [ [ 0 ] * m ] if m == n: return [ [ 1 ] * m ] r1 = [ l + [ 1 ] for l in comb(m-1, n-1, d+1) ] r2 = [ l + [ 0 ] for l in comb(m-1, n, d+1) ] return r1+r2
10개의 자리 중에서 4 자리를 골라내는 조합을 구합니다.
재귀함수로 구현해 보았습니다. 재귀가 어떻게 들어가는지 확인해 보려면, 함수 제일 앞의 print 문을 살려서 돌려보면 됩니다.
댓글 입력