10-12-2008, 04:37 PM
C'est rigolo car moi j'utilise jamais le RAND () en SQL ^^.
Mais ma problématique est peut-être différente car toutes les villes n'ont pas le même poids au niveau de la probabilité d'apparition.
Les villes qui ont une cathédrale ont un poids de 35
les villes avec un temple ont un poids de 8
les villes avec une mission (un simple batiment avec une croix si vous voulez ...) ont un poids de 2.
Plus le poids est important, plus la probabilité d'apparition est importante.
Ainsi si une religion a une cathédrale et une mission, le joueur a 35 chances sur 37 d'apparaitre dans la cathédrale et seulement 2 chances sur 37 d'apparaitre dans la mission.
En précode ça donne
Ma liste des villes n'est jamais amené à dépasser les 100 enregistrements ... aussi je peux me permettre ce genre de méthode qui serait ruineuse dans le cas de 25 M de lignes !
Kéké
Mais ma problématique est peut-être différente car toutes les villes n'ont pas le même poids au niveau de la probabilité d'apparition.
Les villes qui ont une cathédrale ont un poids de 35
les villes avec un temple ont un poids de 8
les villes avec une mission (un simple batiment avec une croix si vous voulez ...) ont un poids de 2.
Plus le poids est important, plus la probabilité d'apparition est importante.
Ainsi si une religion a une cathédrale et une mission, le joueur a 35 chances sur 37 d'apparaitre dans la cathédrale et seulement 2 chances sur 37 d'apparaitre dans la mission.
En précode ça donne
Code :
Je récupère dans un tableau toutes les villes où le joueur peut apparaitre et son poids
J'additionne tous les poids dans une variable $poids_total
Je calcule une variable entre 0 et poids total.
Je scrute la liste ordonnée de ville (peut importe l'ordre ... il faut juste qu'on passe pas 2 fois sur la même ville) et je retranche le poids associé. Dès que j'atteinds une valeur négative ... la ville est choisie.
Ma liste des villes n'est jamais amené à dépasser les 100 enregistrements ... aussi je peux me permettre ce genre de méthode qui serait ruineuse dans le cas de 25 M de lignes !
Kéké