aniversarios.mws

>    with(combinat);

Warning, the protected name Chi has been redefined and unprotected

[Chi, bell, binomial, cartprod, character, choose, composition, conjpart, decodepart, encodepart, fibonacci, firstpart, graycode, inttovec, lastpart, multinomial, nextpart, numbcomb, numbcomp, numbpart...
[Chi, bell, binomial, cartprod, character, choose, composition, conjpart, decodepart, encodepart, fibonacci, firstpart, graycode, inttovec, lastpart, multinomial, nextpart, numbcomb, numbcomp, numbpart...

>    p := proc(n::integer)

>       p(n) := evalf(1-(numbperm(365,n) / 365^n));

>    end;

p := proc (n::integer) p(n) := evalf(1-numbperm(365,n)/(365^n)) end proc

>    for n from 2 to 30 do

>       `n`, p(n);

>    od;

2, .2739726027e-2

3, .8204165885e-2

4, .1635591247e-1

5, .2713557370e-1

6, .4046248365e-1

7, .5623570310e-1

8, .7433529235e-1

9, .9462383389e-1

10, .1169481777

11, .1411413783

12, .1670247888

13, .1944102752

14, .2231025120

15, .2529013198

16, .2836040053

17, .3150076653

18, .3469114179

19, .3791185260

20, .4114383836

21, .4436883352

22, .4756953077

23, .5072972343

24, .5383442579

25, .5686997040

26, .5982408201

27, .6268592823

28, .6544614723

29, .6809685375

30, .7063162427

>    Aniversarios := proc(percentagem::float)

>       local num_pessoas, prob;

>       # Inicializa

>       prob := 0; num_pessoas := 0;

>       # Efectua ciclo até ao número suficiente de pessoas

>       while prob < percentagem do

>          num_pessoas := num_pessoas +1;

>          prob := 1-(numbperm(365,num_pessoas) / 365^num_pessoas);

>       od;

>       RETURN(num_pessoas);

>    end;

Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...
Aniversarios := proc (percentagem::float) local num_pessoas, prob; prob := 0; num_pessoas := 0;  while prob < percentagem do num_pessoas := num_pessoas+1; prob := 1-numbperm(365,num_pessoas)/(365^num_p...

Gráfico

>    with(plots);

Warning, the name changecoords has been redefined

[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, displ...
[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, displ...
[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, displ...
[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, displ...

>    for i from 1 to 9 do

>       n[i]:=Aniversarios(i*.11);

>    od;

>    pointplot({seq([j*.11,n[j]],j=1..9)},symbol=circle,symbolsize=12,color=red,axes=boxed,title=`Problema dos aniversários`);

n[1] := 10

n[2] := 14

n[3] := 18

n[4] := 21

n[5] := 25

n[6] := 29

n[7] := 33

n[8] := 40

n[9] := 57

[Maple Plot]

>   

>    Aniversarios(.5);

23

>    Aniversarios(.99);

57