2012-11-21 7 views
0

내 함수 DicePlot은 10 번 주사위를 5000 번 시뮬레이션합니다. 함수에서, 그것은 각 롤의 10 개의 주사위의 값의 합을 계산합니다.이 값은 1 × 5000 벡터가 될 것이고, 플롯의 상대 빈도 막대 그래프는 히스토그램의 각 빈이 나타낼 동일한 방식으로 선택됩니다. 주사위의 합에 대한 가능한 값.히스토그램에 확률 밀도 함수를 플로팅하는 방법은 무엇입니까?

평균 및 표준 편차는 주사위 값의 1x5000 합계로 계산되며 상대 빈도 막대 그래프 상단의 정규 분포 확률 밀도 함수 (계산 된 평균 및 표준 편차 포함)가 플롯됩니다.

나는 모든 것을 끝내지 만 확률 밀도 함수를 그릴 방법을 혼동합니다. 어떤 도움을 주셔서 감사합니다. 감사!

그래프는 다음과 같이 표시됩니다. enter image description here

function DicePlot (throw_num, die_num) 

throw_num=5000 
die_num= 10 

    throws = rand (throw_num, die_num); 

    throws = ceil (6 * throws); 

    for i = die_num : die_num*6 
    j = find (score == i); 
    y(i-die_num+1) = length (j)/throw_num; 
    end 

    bar (x, y) 

    xlabel ('Score') 
    ylabel ('Estimated Probability') 


    score_ave = sum (score(1:throw_num))/throw_num; 
    score_var = var (score); 



    return 
end 

답변

2

나는 당신의 히스토그램의 맨 위에 축소 가우스 PDF로 플롯 your previous question에 내 대답에서 코드를 추가했습니다. 두 가지 핵심 추가 사항은 다음과 같습니다. 1) hold onhold off을 사용하여 히스토그램을 얻고 같은 그림에 플롯합니다. 2) normpdf의 출력을 히스토그램과 동일한 크기가되도록 적절한 크기로 조정하십시오.

또 다른 한가지는, 귀하의 기능에 대한 나의 이전 대답의 제안을 아직 통합하지 않았다는 것을 알아 채지 못하겠다는 것입니다. 이것에 대한 특별한 이유가 있습니까? 과거에했던 제안을 작업에 반영했다는 증거를 볼 수 없다면 분명히 귀하의 질문에 +1하지 않을 것입니다! 그리고 이제 너는 갔고 내 고등학교 교사 중 한 명처럼 들리게 만들었 어! :-) 당신이 히스토그램 (때문에 중심 극한 정리의) 가우시안해야한다는 사전을 알고하지 않은 경우

%#Define the parameters 
NumDice = 2; 
NumFace = 6; 
NumRoll = 500; 

%#Generate the rolls and obtain the sum of the rolls 
AllRoll = randi(NumFace, NumRoll, NumDice); 
SumRoll = sum(AllRoll, 2); 

%#Determine the bins for the histogram 
Bins = (NumDice:NumFace * NumDice)'; 

%#Build the histogram 
hist(SumRoll, Bins); 
title(sprintf('Histogram generated from %d rolls of %d %d-sided dice', NumRoll, NumDice, NumFace)); 
xlabel(sprintf('Sum of %d dice', NumDice)); 
ylabel('Count'); 
hold on 

%#Obtain the mean and standard deviation of the data 
Mu = mean(SumRoll); 
Sigma = sqrt(var(SumRoll)); 

%#Obtain the Gaussian function using 4 standard deviations on either side of Mu 
LB = Mu - 4 * Sigma; UB = Mu + 4 * Sigma; 
Partition = (LB:(UB - LB)/100:UB)'; 
GaussianData = normpdf(Partition, Mu, Sigma); 

%#Scale the Gaussian data so the size matches that of the histogram 
GaussianData = NumRoll * GaussianData; 

%Plot the Gaussian data 
plot(Partition, GaussianData, '-r'); 
hold off 

PS는, 당신은 또한 통계 도구 상자에서 ksdensity를 사용할 수있는 것은를 얻을 수 경험적 밀도는 커널 함수를 사용한다.

관련 문제