A random-selection tool for classrooms and teams, with configurable workflows, managed history, and verifiable draw records.
Note
SecRandom is released under GNU GPLv3. You may modify and redistribute the source, but derivative redistributions must also use GNU GPLv3.
SecRandom is a fair random-selection application for classrooms, teams, events, decision-making, and other scenarios.
- Roll call: Supports standard random, history-balanced, and repeat-control draws.
- Quick draw: Quickly draws students through a standalone floating window.
- Lottery: Supports prize-wheel and inventory draws, with students and prizes managed independently.
- Rich presentation: Provides unified settings for animation, results, speech, music, and notifications, with fallback when a notification fails.
- Dynamically adjusts weights using history count, draw interval, group, gender, and other factors to reduce repeats and distribution imbalance.
- Uses stable internal identifiers to preserve history; student numbers, IDs, and names are display information only.
- Supports multiple student lists, prize pools, and
.xlsx,.xls,.csvimport, mapping, and preview. - Saves history for every draw round for convenient review.
- Every draw automatically saves a proof record file.
- You can choose to involve the server in and witness the draw process.
- Draw results can be checked again through official channels.
- Settings, lists, and history can all be imported, exported, backed up, and restored.
- Backups may include lists, history, draw proofs, images, and audio, but never passwords or other security information.
- Password, TOTP, or USB-drive protection can secure important operations, and you can choose which operations require verification.
| Mode | What it can do | What it cannot prove |
|---|---|---|
| Offline proof | Review a completed draw process | It is not a pre-draw server witness; it cannot prove that the local program or real-world roster was not modified |
| Online witnessing | Protect the draw flow after the server locks it | It cannot prove that the roster is authentic, complete, or unfiltered before submission |
| Version | Stack | Stage |
|---|---|---|
| v1 | Python + PyQt5 + qfluentwidgets | First desktop implementation |
| v2 | Python + PySide6 + qfluentwidgets | Qt stack evolution |
| v3 | C# + Avalonia + FluentAvalonia | .NET desktop rewrite for continued draw, verification, and desktop-integration development |
- GitHub Releases provides release packages and change notes.
- The official download page provides the latest download entry point.
- Automatic updates validate a signed release manifest and artifact length/hash before deployment. Refer to the package and notes supplied with each release for installation details.
- SecRandom is released under GNU GPLv3.
- See THIRD-PARTY-NOTICES.md for third-party components, copyright information, and distribution-review notes.
- History-balanced weights and candidate filters help reduce repeat selections and improve long-term distribution. They do not replace management of real-world rosters, rules, or processes, and SecRandom does not claim to verify those conditions.
Thank you to everyone who contributes code, reports issues, improves documentation, or provides feedback. The avatars are generated from GitHub contributor data; select them to open the GitHub contributors page for complete statistics.
- Support us on Afdian
- QQ Group 833875216
- QQ Channel
- Bilibili
- Report an issue
- SecRandom documentation
- English contributing guide
Copyright © 2025-2026 SECTL