In my family we love riddles, puzzles and mathematical challenges and it’s not unusual that we share weird problems via our whatsapp group. A couple weeks ago, we received the following question from my brother Alvaro: “what is the average distance between two points in a square?”
Solving this problem mathematically with integrals exceeds my current level of skill, but I realised it would be rather easy to solve this for a discrete amount of points in a square NxN matrix. I could solve it for a matrix of 10×10, 20×20 and see whether the solution converged to a number.
With my raspberry pi, connected via ssh from my iphone, from the comfort of my sofa I wrote the following program in c that iterated with increasing sizes of square matrixes
#include <stdio.h> | |
#include <stdlib.h> | |
#include <math.h> | |
double distancia(int x1,int y1,int x2,int y2){ | |
double distx=x2-x1; | |
double disty=y2-y1; | |
double distanciaalcuadrado=abs(pow(distx,2)+pow(disty,2)); | |
double distancia=sqrt(distanciaalcuadrado); | |
return distancia; | |
} | |
void mediaPuntos(int intervalos){ | |
double suma=0; | |
int contador=0; | |
double media=0.0; | |
double distancias=0.0; | |
int x1=1; | |
int x2=1; | |
int y1=1; | |
int y2=1; | |
double medianor=0; | |
for(x1=1;x1<=intervalos;x1++){ | |
for(y1=1;y1<=intervalos;y1++){ | |
for(x2=1;x2<=intervalos;x2++){ | |
for(y2=1;y2<=intervalos;y2++){ | |
contador++; | |
distancias=distancia(x1,y1,x2,y2); | |
suma=suma+distancias; | |
media=suma/contador; | |
medianor=media/intervalos; | |
//printf("%d:(%d,%d)-(%d,%d)=%f [%f/%d]=%f\n",contador,x1,y1,x2,y2,distancias,media,intervalos,medianor); | |
} | |
} | |
} | |
} | |
printf("%d:%d [%f/%d]=%f\n",intervalos,contador,media,intervalos,medianor); | |
} | |
void main(void){ | |
printf("sumando distancias\n"); | |
int intervalos=10; | |
int intervalosmax=100000; | |
for(;intervalos<=intervalosmax;intervalos++){ | |
mediaPuntos(intervalos); | |
} | |
} |
When reaching a 216×216 matrix, the number of combinations was 2 thousand million at which some variable must have exceeded the maximum size of a double type because I started getting negative results.
The result is that the mean distance between any two points in a square is 0.5214 times the length of the side. I have no clue what this ratio means mathematically.
Do you know what 0.5214 represents in a square of side 1? đŸ™‚