Attribuer au hasard : sélection aléatoire et liste de randomisation
En bref
La vignette tire un échantillon aléatoire simple dans une liste (nombres de 1 à N ou liste collée avec un identifiant par ligne) ou répartit des personnes en groupes : par randomisation en blocs (rapport des groupes, plusieurs tailles de bloc, éventuellement séparément par strates) ou avec des effectifs de groupes fixes. Chaque liste peut être enregistrée en CSV ou copiée.
Un outil pédagogique, pas une randomisation d’étude réelle
La graine est visible. Toute personne qui la connaît, ainsi que la méthode, peut calculer la liste entière à l’avance ; il n’y a ni dissimulation de l’affectation ni protocole. Une étude réelle exige un système validé, une personne indépendante et le protocole de l’institution. C’est pourquoi chaque fichier exporté commence par la ligne « Outil pédagogique - pas pour de vraies études (sans dissimulation) », la graine et la méthode.
Graine
La valeur par défaut est 20261008. La même graine et les mêmes saisies donnent la même liste ; une autre graine donne une autre liste. La graine ne vient jamais de l’horloge. Avec des strates, chaque strate a son propre flux (numéro de la strate à partir de 1) : la liste d’une strate ne change pas quand une autre strate devient plus grande.
Blocs
- Un bloc contient chaque groupe aussi souvent que le rapport l’exige (avec 1:1 et une taille de bloc de 4, deux fois chacun), dans un ordre aléatoire. Après chaque bloc complet, les groupes sont exactement équilibrés ; entre-temps, ils diffèrent d’au plus la moitié de la taille du bloc.
- Quiconque connaît la taille de bloc peut deviner le dernier cas de chaque bloc. C’est pourquoi plusieurs tailles de bloc sont mélangées ; les numéros de bloc dans le tableau montrent où un bloc se termine.
- Le dernier bloc peut rester incomplet ; les groupes ne sont alors pas exactement égaux à la fin. Avec « Compléter le dernier bloc », la liste devient plus longue que le nombre de places.
- De nombreuses petites strates comportent beaucoup de blocs incomplets.
Mode dissimulé : personne par personne
- La liste entière est créée au démarrage à partir de l’aléa du navigateur (et non d’une graine) et n’est pas affichée. Chaque personne reçoit son groupe seulement lorsque son identifiant est saisi ; cela ne peut pas être annulé, et chaque identifiant ne compte qu’une fois.
- L’empreinte (SHA-256 d’un sel et de la liste) engage la liste. Elle doit figurer dans le protocole de l’étude avant la première inclusion. À la fin, la liste est révélée avec le sel ; quiconque recalcule l’empreinte constate que rien n’a été modifié après coup.
- Limite : la liste n’est dissimulée que face à un regard sur l’écran. Quiconque ouvre les outils de développement du navigateur peut la lire, et quiconque vide le stockage du navigateur perd la série. Le journal doit donc être enregistré pendant l’inclusion. Une vraie étude exige un système agréé à cet effet, dans lequel la personne qui inclut ne voit jamais la liste.
Sélection dans une liste
Les identifiants sont seulement affichés et jamais insérés dans une commande ; la liste reste dans le navigateur. Les identifiants en double ne sont pas supprimés (sinon une personne aurait une double chance) mais signalés ; les lignes vides sont ignorées. Limites : au plus un million de lignes de 200 caractères chacune au plus. Une sélection choisit des personnes, une affectation les répartit en groupes ; ce sont deux étapes différentes.
Pour les spécialistes
Générateur mulberry32 (32 bits) avec des sous-flux mélangés à partir de (graine, numéro). Mélange selon Fisher-Yates ; la sélection n’échange que k places, de sorte qu’un million de lignes ne coûte presque rien. Les méthodes sont définies, et non « exactes » par comparaison avec une norme : un autre générateur donnerait d’autres listes. Les propriétés sont testées (chaque bloc complet équilibré, écart d’au plus la moitié de la taille du bloc, même fréquence d’inclusion, même fréquence des six arrangements d’un bloc 1:1 de taille 4 pour des graines fixes), de même que des listes produites dans le script avec une reconstruction du générateur dans R.