Names are configured in names.xml. Name data is in names.xml and names.csv.
First and last names come from the US Census Bureau's
1990 Census Name Files
site. Equal numbers (500) of women's and men's names are read into a strings
collection whose id is firstNames. That total number (1000) of
last names is read into lastNames.
The container iterator whose id is names has iterators for pk,
first, and last names. The iterators for first and last names choose
randomly from their respective collections without replacement. They also
have different seeds, so the chosen names won't have the same index in their
collections.
names is an iterator rather than a collection, because we want
to avoid reusing the same first/last name pair. A name will repeat if enough
are used, but the odds are small (greater than 10002). In
general, collections are used where reuse is desired. In these cases, the
collection size determines the probability of reuse. As an example, see
students in the description of classes.