J’ai pas de JVM (et je n’ai aucune intention de l’installer) donc je n’ai pas pu bricoler avec ton algo.
Après une première lecture, il n’y a pas d’erreur particulière qui me saute aux yeux. Par contre, je me dis que l’erreur que tu autorises sur la somme des poids est en fait plutôt grosse et pourrait expliquer la présence de "tas" de points à certains endroits. Qu’est-ce qui se passe si tu remplaces le test $|1-\sum w|<0.01$ par $|1-\sum w|<10^{-6}$ par exemple ?
Autre remarque, plutôt que d’itérer sur tous les poids possibles de $0$ à $1$, tu pourrais itérer de $0$ à $1-\sum w$ et le dernier poids pourrait être directement mis à $1-\sum w$. Ça t’éviterait de passer par les cas $\sum w>1$ par construction. Ce serait plus efficace d’un point de vue algorithmique, et ça t’éviterait d’avoir à vérifier que $\sum w\approx 1$ puisque tu serais sûr que $\sum w=1$ (tu t’affranchis même du problème d’arrondi au passage).