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? đŸ™‚