生日问题:只要一间屋里有23个人,则至少有两人同一天生日的概率会超过1/2。试模拟两个班60名学生同一天过生日的概率。
1.陈波的代码:
- captu prog drop birth
- prog birth
- drop _all
- set obs 60
- tempvar y
- gen `y'= int(365* uniform())
- sort `y'
- scalar z=0
- forvalues i=1/59 {
- if `y'[`i']==`y'[`i'+1] {
- scalar z=1
- continue, break
- }
- }
- end
- simulate "birth" z,reps(100)
- sum
- captu prog drop birth
- prog birth
- drop _all
- set obs 60
- tempvar y
- gen `y'= int(365* uniform())
- sort `y'
- scalar z=1
- forvalues i=1/59 {
- if `y'[`i']!=`y'[`i'+1] {
- scalar z=0
- continue, break
- }
- }
- end
- simulate "birth" z,reps(100)
- sum
- mata
- mata clear
- A=round(365*uniform(100,60))
- B=J(100,1,1)
- for (j=1;j<=rows(A);j++) {
- for (i=1;i<cols(A);i++) {
- if (A[j,i]!=A[j,i+1]){
- B[j,1]=0
- break
- }
- }
- }
- mean(B)
- end