Déjà il faut savoir si c'est un cercle ou un disque.
Sauf que là on manque de régle précise vis à vis de ton problème!
On pourrait par exemple placer les village cote à cote jusqu'à ce que çà fasse le tour du cercle, mais je suis pas sur que ce soit ce que tu veux.
Je vais tenté donc d'imaginer ce que tu souhaites en faisant les hypothése suivante:
- Placer les villages dans un disque de rayon R constant
- Placer ces villages de façon aléatoire sur le disque
- Garder une distance minimum Dmin entre chaque village
- Avoir des coordonée appartenant à R² et non à Z²... (c'est l'hypothése dont j'ai le plus de doute, mais vu ton trucs avec la moyenne ce doit etre Réel...)
Bref donc là rien de complexe
On se place en coordonée polaire
Ce script génére des positions alétaoires sur le disque de centre 0,0 et de rayon $R en coordonée polaireSauf que là on manque de régle précise vis à vis de ton problème!
On pourrait par exemple placer les village cote à cote jusqu'à ce que çà fasse le tour du cercle, mais je suis pas sur que ce soit ce que tu veux.
Je vais tenté donc d'imaginer ce que tu souhaites en faisant les hypothése suivante:
- Placer les villages dans un disque de rayon R constant
- Placer ces villages de façon aléatoire sur le disque
- Garder une distance minimum Dmin entre chaque village
- Avoir des coordonée appartenant à R² et non à Z²... (c'est l'hypothése dont j'ai le plus de doute, mais vu ton trucs avec la moyenne ce doit etre Réel...)
Bref donc là rien de complexe
On se place en coordonée polaire
Code PHP :
<?php
function pol_aleatoire($R,$alpha=360){
$precision=1000;
$coo_r=mt_rand(0,$precision)/$precision*$R;
$coo_alpha=mt_rand(0,$precision)/$precision*$alpha;
}
Pour obtenir le tout en coordonée cartésienne:
Code PHP :
<?php
$coo_x=$coo_r*sin($coo_alpha);
$coo_alpha=mt_rand(0,360); //alpha étant en degrée