Random role slots without replacement
Each role contributes the configured number of slots. Fisher–Yates shuffles those slots using the browser’s secure random source with rejection sampling, then matches one slot to each roster entry. For a role with c places among n participants, each person has c divided by n probability before the deal. Assignments within a deal are dependent because the counts are fixed. Revealing cards does not run a new draw. The tool validates that every participant appears once and that every role receives exactly its requested number of people.
Individual cards and explicit organizer access
A hidden card is absent from the visible result markup until revealed. Switching participants, hiding a card, leaving the tab or changing window focus conceals disclosed results. Opening all assignments requires acknowledging that the complete mapping will be exposed, then pressing the show button. This reduces accidental disclosure, while all assignments still live in the current browser’s memory. It does not protect against developer tools, screen recording, screenshots, shoulder surfing or a person who controls the device. Do not screen-share a secret reveal.
Copy and print at the intended scope
An individual card has its own copy and print actions. Full copy, CSV and printing all cards appear only after the organizer list is deliberately opened. Ordinary browser printing includes at most the currently revealed individual card; it never automatically prints the organizer mapping. If no card is revealed, the print sheet contains a neutral message. CSV retains person and role IDs alongside names and protects spreadsheet formula prefixes. Exported files and copied text are readable records, so handle them according to your activity’s disclosure rules.