It would seem to me that if you add a number field and use the Random function to put a random number inside this field (Replace Field Contents can do this for the entire set of records), you can simply sort your records on this number field to get a random order.
You can then loop through your records once to set up a meeting record that links it to the current record as the person "hosting" the meeting and to the remaining 39 as the attending guests. With the right relationships or ExecuteSQL() calculations in place, you wouldn't need to loop through these 40 records more than once to do that.
Say you call your table of 40 people, People and your meetings table Meetings:
People|Host::__pkPeopleID = Meetings::_fkHostID
Meetings::_fkHostID ≠ People|Attending::_pkPeopleID
People|Host and People|Attending are my names for two table occurrences based on the People data source table.
Come to think of it, I could actually do this with no loop at all if I a) assign random numbers, b) sort records and c) use import records to create a set of new records in Meetings with __pkPeopleID imported into Meetings::_fkHostID.
For an explanation of the notation that I am using, see the first post of: Common Forum Relationship and Field Notations Explained