2012-12-07 5 views
0

안녕하세요 reseatch 수행하고 난이 스레드에서 결국 때 올바른 방향으로 결국 생각 :임의의 수는

http://code.activestate.com/recipes/117241/

는 기본적으로 내 질문은 : 링크의 코드는 줄 단위로 무엇입니까? 귀하의 설명을 통해 링크의 코드가 만족스러운 정도로 이해할 수 있다면 아래에 작성한 모든 내용을 무시할 수 있습니다.

은 그 링크의 코드는 난수를 생성하지만, 난수가 확률 직접 관련되어 있는지 판단된다.

내 자신의 코드에서 "숫자"와 그 출현 확률을 취하고 출력 "숫자"를 얻으려고 시도 할 확률에 따라 나타납니다. 나는 이것이 혼란 스럽다는 것을 압니다. 그러나 위의 링크를 보면, 제가하려고하는 것이 명확 할 것이기를 바랍니다. 아래 코드는 위의 링크를 참조한 것입니다. 내 프로그램에서 너무

이 내 글로벌 변수는 다음과 같습니다 제가 링크에 따라 임의의 코드를 구현하는 방법을

n= [LOW,lowAttackProb).(MED,medAttackProb),(HIGH,highAttackProb)] 
#lowAttackProb,med...,etc. are based on user input are just percents converted to decimals that add up to 1 in every case 

이것은 :

HIGH= 3 
MED= 2 
LOW= 1 

이 내가 함께 일하고 목록입니다 위 :

x= random.uniform(0,1) 
for alevel,probability in n: 
    if x<probability: 
     break 
    x=x-probability 
return alevel 

for 루프 내부에서 무슨 일이 일어나는지 정확히 알 수없고 x = x-probability 하고있다.

내 목록에서 해당 X = 0.90

그 말을하자, 두 번째 목록 항목에서 발생하는의 기회 (X 이후 확률이 False (미만), 다음, 메신저 너무 확실하지 0.60 어떤 경우 x (확률보다 낮음) 경우에도 코드는 n = n 확률로 이동합니다.

나는 이것이 정말로 의미가 있기를 바랍니다. 안되면 나에게 무엇이 불분명한지 알려주고 나는 그것을 고치려고 노력할 것이다. 모든 도움을 주셔서 감사합니다.

+0

'N = N-probabbility'는 의미를 __not__ 않습니다 리스트와'확률'은 숫자이며,'TypeError'가 실행되고 있어야합니다. 코드의 문제가 정확히 무엇인지 언급하지 않았습니다 : 잘못된 결과 나 에러 메시지를 주거나, 뭐야? 티. 그 정보를 포함시키기 위해 질문을 편집하십시오. –

+0

사과드립니다. x로 변경했습니다. – SeesSound

+0

'n = n - 확률 '대신'x = x - 확률'을 사용하십시오. – mazayus

답변

4

이 코드는 가능한 이벤트의 확률을 고려한 이벤트 선택을 구현합니다. 여기에 그 뒤에 숨은 아이디어가 있습니다.

가 특정 제로 확률이 각각 세 가지 이벤트 (또는 당신이 그들을 부르는 수준), LOW, MED, HIGH이 있으며, 모든 확률은 파이썬의 표준 방법을 사용하여 정확히 1로 요약 한 사이의 임의의 숫자를 생성 할 수 있습니다 0과 1. 그래서 우리는 어떻게 그들을 서로 "맵핑"할 수 있습니까? 숫자는 다음과 같은 방법을 선을 따라 (간결을위한 L, M, 및 H를 호출 할 수 있습니다) 우리의 확률을 정렬 할 수 있습니다 :

0__________________L______________L+M_________________________L+M+H (= 1)

이제 우리는 무작위로 생성 된 번호 x을 가지고 우리는 말할 수

  1. x가 간격 [0, L]에 있으면 첫 번째 이벤트가 발생했습니다.
  2. x가 반 간격 (L, L + M)에 있으면 두 번째 이벤트가 발생 함
  3. x가 반 간격 (L + M, L + M + H)에 있으면 세 번째 이벤트가 발생했습니다. n`은`때문에

당신에 대해 요구하는 코드는 단순히 간격 중 하나 x 일치하고 해당 이벤트 (또는 레벨)을 반환합니다.

+0

고맙습니다, 아주, 아주 잘 설명되어 있습니다. @Andrei – SeesSound

+0

@SajSeesSound, 물론, 여기에 링크를 게시하십시오. – Andrei

+0

잘 모르겠 음 ..... 방을 만드는 방법을 찾을 수 없습니다. – SeesSound

관련 문제