Nous maîtrisons l'art du tirage depuis plus de quatre ans et mettons notre expertise à votre disposition.

geometry

Le tirage au sort

Une procédure de désignation des éléments d'un ensemble de façon aléatoire.

Voilà ce qui définit un tirage au sort. Sur Pickaw, nous répondons à ces deux conditions et bien plus encore.

Chaque tirage sur Pickaw est
Exhaustif
Et donc équitable, puisque nous récupérons et faisons un tirage parmi l'ensemble des participations du concours.
Aléatoire
Car il est impossible pour nous ou pour l'utilisateur de choisir les personnes tirées : le hasard des tirages provient de Random.org.
Reproductible
Grâce à la seed unique générée et attribuée au tirage qui permet de le vérifier et le reproduire à partir des participations.

Ces trois éléments constituent pour nous le minimum requis pour assurer l'intégrité d'un tirage au sort, qui se déroulera ainsi dans les meilleures conditions. Mais comment tout cela est possible sachant qu'aléatoire et reproductible ne peuvent pas cohabiter ? C'est comme cela que nous introduisons le concept de seed.

Une seed ou "graine" est une chaîne unique de 16 caractères. En utilisant la même seed pour un tirage, vous obtiendrez la même issue : cela permet de reproduire un tirage afin de vérifier qu'il n'a pas été altéré. Consultez la page Drawchain™ pour plus de détails techniques sur la seed.

Déroulement d'un tirage

Tous les tirages effectués sur Pickaw se déroulent de la même manière, en plusieurs étapes, parfois un peu techniques :

Si une erreur ou une déconnexion se produit lors du tirage, il est automatiquement mis en pause avec une sauvegarde de l'état de l'instance seedrandom. Cela permet de le reprendre ultérieurement, sans perdre l'état de l'aléa reproductible.
Notre système de tirage peut tirer & vérifier jusqu'à 10 participations simultanément, cela permet d'aller plus vite lorsqu'il y a beaucoup de gagnants à tirer.
Les tirages au sort effectués sur TWrench utilisaient également la librairie seedrandom pour déterminer les places à tirer parmi l'ensemble des participations.
1
Au début du tirage, on instancie un objet seedrandom avec la seed attribuée.
2
Un nombre décimal compris entre 0 et 1 (exclu) est généré via l'instance seedrandom.
3
Ce nombre est multiplié par le nombre total de participations pondérées restantes du concours, nous obtenons ici une position gagnante.
  1. S'il n'y a pas eu de participation précédement tirée : on conserve la position.
  2. Sinon s'il y a déjà eu au moins une participation tirée : on recalcule la position en incrémentant celle-ci à chaque fois qu'une position inférieure ou égale à celle-ci est rencontrée parmi les participations déjà tirées triées par position.
Par exemple : sur un concours à 101 participations, si les 3 participations déjà tirées ont pour position {30, 50, 60} et que la position tirée (entre 0 (inclus) et 97 (exclu)) est 49 : la position recalculée est 51 car incrémentée deux fois (pour 30 et 50). Si elle avait été 29 ou inférieure, elle serait restée inchangée.
4
La position (recalculée) permet de retrouver rapidement la participation concernée dans notre base de données, cette participation est considérée comme étant tirée.
5
La participation est automatiquement vérifiée selon les paramètres du concours, puis elle est éventuellement soumise à la vérification manuelle du tireur (si activée).
  1. Si elle passe toutes les vérifications avec succès : elle est désignée gagnante.
  2. Sinon si elle échoue à au moins une des vérifications : on réitère à partir de l'étape 2 et une autre participation est tirée jusqu'à ce que le nombre de gagnants soit atteint, ou jusqu'à épuisement des participations.
earth

Source de l'aléatoire

Pour des raisons évidentes, nous ne choisissons pas les gagnants des concours tirés au sort sur Pickaw. L'aléatoire qui détermine l'issue des tirages est générée via un service tiers.

Nous achetons ces services chaque mois auprès de Random.org afin qu'ils nous fournissent des chaînes de caractères permettant de générer des seed pour les tirages. En utilisant leurs services, nous nous assurons d'avoir une base véritablement aléatoire.

En informatique, l'aléatoire ne peut pas être reproduit, peu importe la méthode utilisée (ou alors on parle de pseudo-aléatoire). C'est pourquoi nous nous basons sur des chaînes vraiment aléatoires provenant de Random.org qui sont générées à partir de bruits atmosphériques à travers le monde. Nous vous invitons à consulter cette page (en anglais) pour en savoir plus sur l'aléatoire et le pseudo-aléatoire.

De cette manière, les participants sont certains que les gagnants ne sont pas désignés par l'organisateur de concours, qui est lui-même certain qu'ils ne sont pas désignés par Pickaw.

Et comment s'assure-t-on que les gagnants ne sont pas désignés par Pickaw ou qu'il n'y a pas eu d'altération entre temps ? Grâce à la Drawchain™.

Présentation de la Drawchain™

Afin de régir toute cette partie de tirage au sort, nous avons imaginé et conçu un socle commun que nous avons appelé la Drawchain™ qui signifie "chaîne des tirages", à l'instar de la Blockchain pour la "chaîne des blocs". Pour les développeurs et plus curieux d'entre vous, nous vous invitons à consulter la présentation (un peu technique) de la Drawchain™ pour savoir comment elle fonctionne.