2014-02-09 2 views
0

두 시퀀스 (s1, s2)를 사용하여 파이썬에서 주어진 횟수의 시퀸스에 대해 시퀀스 2 (s2)의 임의 문자열을 생성하고 두 문자열을 모두 반환해야하는 파이썬 코드를 작성해야합니다 (s1 fixed , s2 변경). 예 :임의의 문자열 시퀀스 생성

input seq: [aabcc,aabcc] 
Output seq for 4 trials: 

Trial1:[aabcc, aabcc] 
Trial2:[aabcc, aaabc] 
Trial3:[aabcc, aaaaa] 
Trial4:[aabcc, ccaab] 

주어진 시범 횟수만큼 임의의 시퀀스를 생성하는 것과 같습니다. 누군가가 파이썬에서 기본 for 및 while 루프를 사용하여 이것을 코딩하도록 도울 수 있습니까? (즉, 내장 함수가 없음).

Trial1:[aabcc, bbaca] 
Trial2:[aabcc, cbaac] 
Trial3:[aabcc, cacac] 
Trial4:[aabcc, caacc] 
+1

'시퀀스 2를위한 랜덤 문자열 생성 '. 어떻게 설명 할 수 있니? – thefourtheye

+0

안녕하세요, 예 : abcde, aabcd, abcee, adbce, aaacd 등 .... 주어진 횟수만큼 재판 .... – Shraddha

+1

죄송합니다. 나는 아직도 여기 패턴을 보지 못하고있다. 무작위로 * 생성되어야한다고 확신합니까? – thefourtheye

답변

1
import random 

# if you can't use random.choice, this is a one-for-one substitute 
def random_choice(seq): 
    """ 
    Return a random element from a non-empty sequence 
    """ 
    return seq[int(random.random() * len(seq))] 

def random_string_from_sample(s, length=None): 
    """ 
    Return a random string based on the letter-distribution in s 
    """ 
    if length is None: 
     length = len(s) 
    return ''.join(random_choice(s) for _ in range(length)) 

def main(): 
    s0, s1 = "aabcc", "aabcc" 
    trials = 4 
    for i in range(1, trials+1): 
     print("Trial{}:[{}, {}]".format(i, s0, random_string_from_sample(s1))) 

if __name__=="__main__": 
    main() 

을 생성한다. 해당 동작을 원하지 않으면 설정 변환을 제거하십시오.

from random import randint 

s = "aabbcc" 

chars = list(set(s)) 
nchars = len(chars) 
trials = 4 

for i in range(trials): 
    rng_sample = ''.join([chars[randint(0,nchars-1)] for _ in range(len(s))]) 
    print rng_sample 
0

이 솔루션 고유의 문자를 추출하고, 따라서 결과가 입력 높은 주파수 문자에 대해 가중 될 것이다

0

S1은 분명히 쉽게 반환 할 수 있습니다. s2는리스트로 바뀔 수 있고 뒤섞 일 것이다 :

s2 ="aabbcc" 
import random 
h = list(s2) 

random.shuffle(h) 

newString = ''.join(h) 
print (newString) 
+0

고맙습니다 .. .append, .shuffle 및 .join을 사용하지 않고 구현할 수 있습니까 ?? – Shraddha

+0

아마도이 문제에 사용할 수있는 것을 알면 더 쉬울 것입니다. random.randint()는 사용할 수 있지만 random.shuffle()은 사용할 수 없다면별로 의미가 없습니다. 문제를 올바르게 이해 했습니까? –