(This article was first published on

This evening, I found a nice probabilistic puzzle on http://www.futilitycloset.com/ "A bag contains 16 billiard balls, some white and some black. You draw
two balls at the same time. It is equally likely that the two will be
the same color as different colors. What is the proportion of colors
within the bag?"**Freakonometrics - Tag - R-english**, and kindly contributed to R-bloggers)To be honest, I did not understood the answer on the blog, but if we write it down, we want to solve

Let us count: if is the total number of balls, and if is the number of white balls then

I.e. we want to solve a polynomial equation (of order 2) in , or to be more precise, in If is equal to 16, then is either 6 or 10. It can be visualized below

> balls=function(n=16){

+ NB=rep(NA,n)

+ for(k in 2:(n-2)){

+ NB[k]=(k*(k-1)+(n-k)*(n-k-1))

+ }

+ k=which(NB==n*(n-1)/2)

+ if(length(k)>0){

+ plot(1:n,NB,type="b")

+ abline(h=n*(n-1)/2,col="red")

+ points((1:n)[k],NB[k],pch=19,col="red")}

+ return((1:n)[k])}

> balls()

[1] 6 10

But more generally, we can seek other 's and other pairs of solutions of such a problem. I am not good in arithmetic, so let us run some codes. And what we get is quite nice: if admits a pair of solutions, then is the squared of another integer, say . Further, the difference between and is precisely . And will be one of the answers when the total number of balls will be . Thus, recursively, it is extremely simple to get all possible answers. Below, we have , , and the difference between and ,

> for(s in 4:1000){

+ b=balls(s)

+ if(length(b)>0) print(c(s,b,diff(b)))

+ }

[1] 9 3 6 3

[1] 16 6 10 4

[1] 25 10 15 5

[1] 36 15 21 6

[1] 49 21 28 7

[1] 64 28 36 8

[1] 81 36 45 9

[1] 100 45 55 10

[1] 121 55 66 11

[1] 144 66 78 12

[1] 169 78 91 13

[1] 196 91 105 14

[1] 225 105 120 15

[1] 256 120 136 16

[1] 289 136 153 17

[1] 324 153 171 18

[1] 361 171 190 19

[1] 400 190 210 20

[1] 441 210 231 21

[1] 484 231 253 22

[1] 529 253 276 23

[1] 576 276 300 24

[1] 625 300 325 25

[1] 676 325 351 26

[1] 729 351 378 27

[1] 784 378 406 28

[1] 841 406 435 29

[1] 900 435 465 30

[1] 961 465 496 31

Finally, observe that the 's are well known, from Pascal's triangle,

also known as

*triangular numbers*,

Maths can be magic, sometimes...

To

**leave a comment**for the author, please follow the link and comment on his blog:**Freakonometrics - Tag - R-english**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...