저는 J 프로그래밍 언어로 약간 연주하고 있습니다. 확률 목록에서 엔트로피를 계산하기 위해 동사를 만들려고했습니다 (이벤트의 결과, 수식은 파이썬에서 이와 같을 것입니다)./pesudocode : -sum([p*log(p,2) for p in ps])
).J 언어로 된 엔트로피 수식
내가 구성 (@:
) 작동을 사용하려고했습니다 버전,하지만 & 포크 다른 일을하고있는 것 같다 후크를 기반으로 한, 그리고 그것이 무엇을을하고 왜 나는 약 신경. 나는 후크 및 포크 포크로 일하는 것을 시도하고있어,이 경우는 나의 직감이 잘못되었다는 것을 증명한다. 여기
probs =: 0.75 0.25 NB. probabilties
entropy =: +/ @: (- * 2&^.)
entropyWrong =: +/ (- * 2&^.)
entropy probs NB. this is correct
0.811278
entropyWrong probs NB. this is wrong!
1.06128 1.25
0.561278 0.75
NB. shouldn't the following be the same as above (wrong)?
+/ (- * 2&^.) probs
0.811278
내 질문의 요점은하지 그렇지 않은 이유는 "JS에서 확률의 엔트로피를 계산하는 방법"하지만 "왜 위의 entropyWrong
이 무엇을하지 않습니다 및 분명히 옳은 일을 수행한다 "는 내용이다"와 같은이.
감사합니다! 위대하고 모호하지 않은 설명. 하지만 이제는 질문이 남았습니다 : "두번째 + /'"는 무엇을합니까? 필자는 동사에 '/'부사를 적용한 동사가 자동으로 모나드 식 (ML/하스켈과 같은 언어로 'foldl +'과 같이 생각하면 나에게 전혀 의미가 없음)하다고 생각했습니다. 나는 그것을위한 문서를 찾지 않는 것처럼 보이고, '1 2 +/100 200'과 같은 표현의 결과로부터 나는 그 논리를 추론 할 수 없다. – NeuronQ
문제 없습니다. + /의 이항 형식은 표라고 불리며 J 사전의 어휘 섹션에서 가장 잘 설명 할 수 있습니다. http://www.jsoftware.com/help/dictionary/d420.htm 기본적으로 왼쪽 인자 (항목은 원자 일 수도 아닐 수도 있음)의 각 항목을 취해 오른쪽 인수의 항목에 적용합니다. C 프로그래머를위한 J는 동사 순위 http://www.jsoftware.com/help/jforc/loopless_code_i_verbs_have_r.htm 토론에서 이러한 종류의 것들에 대한 좋은 섹션을 가지고 있습니다. – bob