-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Utilisation de l'aléatoire #46
Comments
Bonjour, |
Et la probabilité qu'à une licence, entre deux candidats de même type, de même ordres absolu et relatif et de même nombre aléatoire, seul l'un des deux est admis est négligeable. |
Ces points ont déjà été soulevés, bien que de manière nettement moins complète :
Sur le fond, on a vraiment quelque chose qui ressemble à un problème de conception (il y a effectivement les procédés utilisés en cryptographie, mais on pourrait aussi imaginer une solution déterministe, type un hash sur une partie des données (les collisions sont alors réputées rares), etc.). Mais cela reste très marginal par rapport à d'autres questions, par exemple celle-ci : le numéro d'ordre du voeu d'un candidat pour une formation est stocké dans plusieurs champs de la table |
Le mer. 26 oct. 2016, Julien Férard [email protected] a écrit :
Le déterminisme (total) n'est pas une bonne idée a priori. D'une part
Je suis d'accord. TEL : (+33) (0)4 72 50 48 13 |
@jcourant difficile de modifier son nom ou son prénom, mais on peut toujours déménager ! C'est donc vrai. La seule vraie bonne méthode, à ma connaissance, c'est celle de la bataille : effectue des tirages aléatoires jusqu'à ce qu'on obtienne une différence. La probabilité de collision sur n tirages tend vers 0 avec n croissant, donc on a l'espoir de parvenir à départager les candidats en un temps raisonnable. Mais pour implanter ça en PL/SQL, c'est une autre histoire : ce genre de problématique ne correspond pas tout à fait à l'idée qu'on se fait d'un traitement batch. |
Il y en a une autre, meilleur AMHA : la méthode de Fisher-Yates (appelée
APB n'a aucune obligation de travailler exclusivement en PL/SQL... Cela dit, je ne connais de PL/SQL que ce que je viens de regarder |
@jcourant très intéressant. Je suis resté collé au problème : en supposant la collision inévitable, comment s'en sortir ? Ce cas de figure existe également (dans un réseau par ex. : https://fr.wikipedia.org/wiki/Carrier_Sense_Multiple_Access_with_Collision_Detection, avec la solution mentionnée ci-dessus), mais ici, il s'agit simplement d'ordonner de manière aléatoire des éléments. Je ne connaissais par la méthode de Fisher-Yates, mais elle me conforte dans une idée simple : il est plus facile et plus rapide de créer du désordre (O(n)) que de l'ordre (O(n2) pour le tri par sélection) ! Concernant le PL/SQL, c'est un langage de batch, donc on peut faire beaucoup de choses, mais ce n'est pas pour autant le bon outil pour tout. Pour mettre en oeuvre un algorithme assez simple comme celui-là, on entrerait déjà dans le dur... |
Bonjour,
On trouve dans le code «RANDOM.values(1, 999999)» à plusieurs reprises. Je n'ai pas encore lu l'ensemble du code mais il semble que ça serve à départager les candidats. Pour cela, il faut éviter de tomber deux fois sur la même valeur (ce qu'on appelle une collision).
Or le paradoxe des anniversaires (le fait que dans une assemblée de 24 personnes, il y a au moins une chance sur deux que 2 personnes aient la même date d'anniversaire) dit essentiellement que la probabilité d'avoir une collision lors de k tirages indépendants parmi n valeurs équiprobables est importante lorsque k est de l'ordre de racine de n. Si on tire au sort entre 1000 candidats, on y est... (Peut-être que ça n'a pas d'impact par la suite, mais ça n'est pas très bon signe quand même.)
De manière plus générale, l'utilisation d'un tirage au sort ici me semble poser pas mal de questions :
Ce n'est pas comme si ces questions étaient totalement nouvelles : il existe des protocoles cryptographiques conçus pour pouvoir tirer des valeurs au hasard de façon à garantir que la fraude ne soit pas possible (dans certaines limites). Vu la sensibilité des données manipulées, APB ne devrait-il pas les utiliser ?
Judicaël Courant
(Enseignant d'informatique, c'est cependant en tant que citoyen que je m'exprime ici).
The text was updated successfully, but these errors were encountered: