All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars    
perplexus dot info

Home > Probability
Golden Birthday Occurrence (Posted on 2025-02-27) Difficulty: 3 of 5
Golden Anniversary Occurrence asked about a golden wedding anniversary. However a golden birthday has come up in discussion and it seems that it follows different rules:

A golden birthday is your nth birthday, where n is the date of the month of the day you were born. If you were born on, say, January 11, then 11 years later on your 11th birthday it would be your golden birthday.

As in the Anniversary puzzle, what's asked is "What is the probability that the golden birthday occurs on the same day of the week as the original day of birth?"

This time let's use the 77-year period 1950 - 2026 as containing the year of birth.

  Submitted by Charlie    
No Rating
Solution: (Hide)
In this time period, 27759 days of birth were considered, of which 3648 were days in which the nth golden birthday would be triggered. The fraction is 64/487, or about 0.131416837782341.

It turns out that only 7 dates of the month make this possible. They are listed below with the number of occurrences of each within the 76-year period.

date           5     6    11    17    22    23    28    
occurrences  228   456   684   684   456   228   912

The 912 for the 28th of the month stands out, as 12*76. It results from the fact that within this time span the cycle of year types is 28 years long, repeating the yearly calendar (though irregular such repeats occur within the cycle), so everyone's 28th birthday occurs on the same day of the week as his day of birth. Only years like 1900 or 2100 disrupt this cycle.

y=1950; m=1; d=1; dList=[]; idList=[];
ct=0; yList=[]; considered=0;
dayCt=zeros(1,31);
dt=datetime(y,m,d);
while y<2026
  dt2=datetime(y+d,m,d);
  considered=considered+1;
  if month(dt2)==m % leap->non-leap gives March vs Feb
    if weekday(dt)==weekday(dt2)
      ct=ct+1;
      dayCt(day(dt))=dayCt(day(dt))+1;
      % if ~ismember(year(dt),yList)
      %   yList(end+1)=year(dt);
      % end
      if ~ismember(day(dt),dList)
        dList(end+1)=day(dt);
      end
      did=100*month(dt)+day(dt);
      if ~ismember(did,idList)
        idList(end+1)=did;
      end
    end
  end
  jd=juliandate(dt)+1;
  dt=datetime(jd,'ConvertFrom','juliandate');

  y=year(dt);
  m=month(dt);
  d=day(dt);
end
ct
considered
sym(ct/considered)
ct/considered

dayCt=dayCt(dList);
[dList,idx]=sort(dList);
dList
dayCt(idx)



ct =
        3648
considered =
       27759
ans =
64/487
ans =
         0.131416837782341
dList =
     5     6    11    17    22    23    28
ans =
   228   456   684   684   456   228   912

Comments: ( You must be logged in to post comments.)
  Subject Author Date
There are no comments yet.
Please log in:
Login:
Password:
Remember me:
Sign up! | Forgot password


Search:
Search body:
Forums (0)
Newest Problems
Random Problem
FAQ | About This Site
Site Statistics
New Comments (11)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On

Chatterbox:
Copyright © 2002 - 2025 by Animus Pactum Consulting. All rights reserved. Privacy Information