The rule is a shuffled cycle
The scheduler shuffles the eligible roster once, gives day 1 to the first shuffled person and continues through that order. When it reaches the final name, it returns to the first. This is not an independent draw for every date. The cycle is useful because every entered person appears once before anybody can receive a second duty. The browser supplies the shuffle locally; no roster is sent to a server.
Count the duties before publishing
For D days and P people, every total is either floor(D/P) or ceil(D/P). September 2026 has 30 days. With five people, 30 divided by 5 is 6, so everyone has six duties. With seven people, 30 divided by 7 is four remainder two: two shuffled positions receive five duties and five positions receive four. The difference is never greater than one.
Worked calendar
Suppose the shuffled order is Casey, Emery, Avery, Dev, Blake for September. Days 1 through 5 go to those names in that order; day 6 is Casey again. Day 30 is Blake. The result reports the complete day-to-name list and totals, so a reader can check both the 30 assigned dates and the six duties per person. A weekday is not given extra weight by this rule.
Availability is outside the random rule
Enter only people eligible under the rule you agreed. If Blake cannot work weekends, an unrestricted cycle can give Blake a Saturday and is not the right model. Decide absences, swaps, holidays, and whether replacements receive credit before scheduling. A necessary accommodation is an explicit change to a random schedule, not a reason to rerun until a convenient result appears.
What this schedule does not balance
Equal number of days does not mean equal workload. Overnight, weekend, opening, closing, or specialist shifts need their own data and rules. This page assigns one daily duty only. It does not send reminders, track attendance, account for time zones, or create payroll evidence. Copy the result to the calendar your group actually uses.
How it differs
A single random draw chooses one person. A no-consecutive-repeat picker creates a sequence but can leave unequal totals. This page is specifically a monthly rota: one shuffled cycle across all calendar days with a visible remainder calculation. It suits casual shared chores, classroom helpers, and low-stakes volunteer duties, not employment, safety, or rights-affecting allocation.
A checklist for a readable rota
Before accepting the output, verify the month rather than merely the number of rows. February has 28 days in 2026, while February 2028 has 29; the browser derives the final day from the selected calendar month. Check that each line has one date and one name, then total each name from the displayed sequence. The displayed duty totals are derived from the quotient and remainder, so they provide a quick independent check against a copied schedule.
Next, check the policy that surrounds the mathematics. If a participant is unavailable for one day, decide whether they trade with somebody, whether their missed assignment moves to the end of the cycle, and whether a facilitator covers it. These are different policies with different future totals. A random cycle is transparent precisely because it does not silently choose among them. Add a dated note to the published rota when a human exception occurs.
A cycle also has a visible boundary. The person on the last day and the person on the first day of the next month may be different or the same depending on whether the next month is generated independently. If continuity between months matters, keep one longer ordered rota and carry its next position forward. If each month is an independent fresh allocation, say so before either month is drawn. Both practices can be fair; mixing them after seeing outcomes cannot.