Hi Mark,
This might do the trick:
The key appears to be to install an extra (virtual) table.
Table 1, named Seeds, calculates a series of index numbers, that will be read by a formula on the second table to assign tables to each student (row) for each week (column). No names, or even a column for names at this point, as there will be several extra 'virtual students' destined to sit at thee same table through the full term. (Perhaps these are the faculty members.).
Here's what the top part of this table looks like:

The table contains one formula, entered in A2, then filled right to AE2 and down to row 246:
A2: (ROW()−1+QUOTIENT(ROW()−1,31))×COLUMN()+QUOTIENT(ROW()−1,31)
The pair of parentheses shown in bold will appear as 'ordinary' characters in the formula editor; the rest will be formatted according to Numbers's style.
The second table, 'Dist 1' (short for Distribution 1) reads each number and converts it to a table assignment using the numbers from 0 to 30. I've hidden a few rows to show an anomaly that occurs at regular intervals on this table, and will be handled on the next.

One formula on this table, entered in A2 and filled to AE246, after which error triangles start appearing.
A2: MOD(INDEX(Seed::$A:$AE,ROW(),COLUMN()),31)
INDEX copies the value from the same cell in Seed, MOD divides that number by 31, and returns the remainder.
The Quotient function in the formula on Seed server as a stepper to prevent this table from simply repeating the same set of seating assignments for each set of 30 (or 31) students. This results in a row of identical values on periodic rows.
Table 3 ('HC1') provides a means of fixing and editing the values generated on 'Dist 1' without destroying the formulas on 'Dist 1'.

The formula is a simple cell reference to the same cell on Dist 1:
A2: =Dist 1::A2
Fill right to AE2 and down to row 242 (the second row of 7s on Dist 10.
When the formulas finish calculating, and with all cells (except the header row) selected:
Copy.
Go Edit > Paste Formula Results.
This replaces the formula in each cell with the last result calculated there, fixing those values.
Delete each of the rows containing a string of identical values.
Table 4, 'Trimmed & filled'
Duplicate HC1, and place this formula below into A2.
A2: =IF(HC1::A2=0,HC1::$AE2,HC1::A2)
Fill right to AD2, and down to the last row of the table.
The purpose of this formula is to copy the values from HC1, plugging the holes (zeroes) by replacing them with the value in column AE of that row.

When done, delete column AE (on this table), then do the Copy > Paste Formula Results to create a fixed seating assignment chart that you can then add student names to by adding a new column to the left of column A.
For convenience, I'll copy the contents of the final table in a new post below. You can copy it from there, and investigate to see if it fits the bill.
Regards,
Barry