Playing with fire (or water)

A few days ago,http://www.futilitycloset.com/published a short post based on the fourth problem of the 1987 Canadian Mathematical Olympiad (from on a problem from the 6th All Soviet Union Mathematical Competition in Voronezh, 1966). The problem is simple (as always). It is about water pistol duels (with an odd number of players)

The answer is nice, an can be read on the blog.

What puzzled me in this problem is the following: if we know, for sure, that at least one player won’t get wet, we don’t know exactly how many of them won’t get wet (assuming that if they shoot at the closest, they hit him for sure) ? It is simple to run simulations, e.g. assuming that players are uniformly distributed over a square,

NOTWET=function(n){
x=runif(n)
y=runif(n)
(d=as.matrix(dist(cbind(x,y), method = "euclidean",upper=TRUE)))
diag(d)=999999
dmin=apply(d,2,which.min)
notwet=n-length(table(dmin))
return(notwet)}

It is then rather simple to get the distribution of the number of player that did not get wet,

N25=Vectorize(NOTWET)(n=rep(25,NSim))
T=table(N25)
plot(as.numeric(names(T)),T/NSim,type="b")

The graph for different values for the total number of players is the following (based on 25,000 simulations)

If we investigate further, say with 51 players, we have a distribution for the total number of players that did not get wet which looks exactly like the Gaussian distribution,

NSim=25000
N51=Vectorize(NOTWET)(n=rep(51,NSim))
T=table(N51)
plot(as.numeric(names(T)),T/NSim,type="b",col="blue")
u=seq(0,51,by=.1)
lines(u,dnorm(u,mean(N51),sd(N51)),col="red",lty=2)

If anyone has an intuition (not to say a proof) for that, I’d be glad to hear it…


OpenEdition suggests that you cite this post as follows:
Arthur Charpentier (April 2, 2012). Playing with fire (or water). Freakonometrics. Retrieved January 13, 2025 from https://doi.org/10.58079/oul0


5 thoughts on “Playing with fire (or water)”

  1. Oui, c’est ce que j’avais pensé initialement, sauf que compte tenu de la variance et de l’espérance, la seule loi binomiale qui marche est surprenante… par exemple, sur le dernier exemple numérique, avec 51 participants, on aurait une loi binomiale de paramètres n et p respectivement

    > mean(N51)/(1-var(N51)/mean(N51)) [1] 21.86627 > 1-var(N51)/mean(N51) [1] 0.6627466

    Je ne vois pas comment interpréter ce nombre n. Et la probabilité semble très proche de 2/3. Car il y a une régularité manifeste, surtout si on change le nombre de joueurs,

     n=p=rep(NA,20) for(i in 1:20){ NSim=10000 N=Vectorize(NOTWET)(n=rep(3+2*i,NSim)) n[i]=mean(N)/(1-var(N)/mean(N)) p[i]=1-var(N)/mean(N) } plot(seq(5,43,by=2),n,col="red",type="b") plot(seq(5,43,by=2),p,col="blue",type="b")

    Le 2/3 semble une constante universelle (indépendante du nombre de joueurs) dans ce problème…. et je ne sais pas pourquoi… je ne sais même pas si c’est lié à la forme du terrain… mais je pense qu’il vaut mieux faire un autre billet sur le sujet ! A suivre donc…

  2. Si les évenements {Xi non mouillé } sont indépendants (?) alors le nombre de personnes non mouillés suit une loi binomiale donc la limite peut être une gaussienne.

  3. Nice blog~
    Find a typo: cas.numeric should be as.numeric in “plot(cas.numeric(names(T)),T/NSim,type=”b”) “

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.