JeuWeb - Crée ton jeu par navigateur
Probleme d'optimisation: tirage aléatoire sans remise. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Probleme d'optimisation: tirage aléatoire sans remise. (/showthread.php?tid=3578)

Pages : 1 2 3


RE: Probleme d'optimisation: tirage aléatoire sans remise. - Anthor - 27-01-2009

(23-01-2009, 06:32 PM)Anthor a écrit : Pourquoi un algorithme non compilé serait-il plus rapide qu'une fonction native ?

Je pense que la c'est surtout la question à te poser ^^

On en revient à ce que je disais ^^ Il y a une raison au fait que l'on est des fonctions natives et que l'on puisse ajouter toutes les extensions possibles et imaginables à PHP.


RE: Probleme d'optimisation: tirage aléatoire sans remise. - Argorate - 28-01-2009

J-12: Bonne idée, je viens de tester, donc on gagne encore un peu :
Citation :Methode 1: Temps moyen : 0.000 399 248 770 237 secondes (Temps Exec. 399.248770237secondes)

Code PHP :
<?php 
function methode1()
{
$time = microtime(true);
$dispo= range(1, 30);
$taille_tab = count($dispo);

$i=0;
while(
$i<20)
{
$rand = mt_rand(1, $taille_tab); //on tire entre 1 et la taille de notre tableau.

$a = $rand;
while(
$a<=$taille_tab)
{
if(
$a == $taille_tab) {$taille_tab--; unset($dispo[$a]);} //on détruit le dernier élément du tableau pour avoir le bon nombre d'élément au prochain tour de boucle
else $dispo[$a] = $dispo[$a+1]; //on décale notre tableau vers la gauche
$a++;
}
$i++;
}
$time2 = microtime(true);
$time = $time2 - $time;

return
$time;
}


Récapitulatif (final^^):
Citation :Methode 1: Temps moyen : 0.002 463 416 217 09 secondes (Temps Exec. 2463.41621709secondes) (ancienne version [très moche])

Methode 1: Temps moyen : 0.000 619 438 126 564 secondes (Temps Exec. 619.438126564secondes) (Ancienne version[moche])

Methode 1: Temps moyen : 0.000 399 248 770 237 secondes (Temps Exec. 399.248770237secondes) (Dernière version[la moins moche^^])

Methode 2: Temps moyen : 0.000 034 199 709 653 9 secondes Temps Exec. 34.1997096539secondes)

Methode 3: Temps moyen : 0.000 029 232 471 94 29 secondes (Temps Exec. 29.2324719429secondes)

Methode 4: Temps moyen : 0.000 172 626 668 93 secondes(Temps Exec. 172.62666893secondes)

Anthor: Le truc c'est que je ne connaissais pas ces fonctions natives justement(range() ainsi que array_rand()...), d'où la création de mon post Smile

Donc merci de m'avoir aider a me perfectionner un peu sur les tableaux Big Grin


RE: Probleme d'optimisation: tirage aléatoire sans remise. - Cartman34 - 28-01-2009

Ca signifie que tu ne connais pas la bible des développeurs, le site incontournable !!!
PHP.NET !!!


RE: Probleme d'optimisation: tirage aléatoire sans remise. - Argorate - 28-01-2009

Bien sur que je connais, mais chercher des fonctions au pif (ou les apprendre toutes par cœur), je trouve ça bête, surtout comparé au faite de demander à quelqu'un qui aurait déjà réfléchit au problème...^^

Je te rassure, je me sert de ce site régulièrement. Smile


RE: Probleme d'optimisation: tirage aléatoire sans remise. - Cartman34 - 28-01-2009

Je cherche pas au pif...y'a des catégorie, quand je recherche quelque chose sur les tableaux, je tape array dans la barre de recherche, quand c'est sur les fichier, je tape file...
N'hésitez pas à y aller, c'est indispensable !