from bk_random import cartesian_choice, weighted_cartesian_choice
countries = ["France", "Switzerland", "Germany"]
w_firstnames = { "France" : [ ("Marie", 10), ("Thomas", 10),
("Camille", 10), ("Nicolas", 9),
("La", 10), ("Julien", 9),
("Manon", 9), ("Quentin", 9),
("Chlo", 8), ("Maxime", 9),
("Laura", 7), ("Alexandre", 6),
("Clementine", 2), ("Grgory", 2),
("Sandra", 1), ("Philippe", 1)],
"Switzerland": [ ("Sarah", 10), ("Hans", 10),
("Laura", 9), ("Peter", 8),
("Mlissa", 9), ("Walter", 7),
("Ocane", 7), ("Daniel", 7),
("Nomie", 6), ("Reto", 7),
("Laura", 7), ("Bruno", 6),
("Eva", 2), ("Urli", 4),
("Sandra", 1), ("Marcel", 1)],
"Germany": [ ("Ursula", 10), ("Peter", 10),
("Monika", 9), ("Michael", 8),
("Brigitte", 9), ("Thomas", 7),
("Stefanie", 7), ("Andreas", 7),
("Maria", 6), ("Wolfgang", 7),
("Gabriele", 7), ("Manfred", 6),
("Nicole", 2), ("Matthias", 4),
("Christine", 1), ("Dirk", 1)],
"Italy" : [ ("Francesco", 20), ("Alessandro", 19),
("Mattia", 19), ("Lorenzo", 18),
("Leonardo", 16), ("Andrea", 15),
("Gabriele", 14), ("Matteo", 14),
("Tommaso", 12), ("Riccardo", 11),
("Sofia", 20), ("Aurora", 18),
("Giulia", 16), ("Giorgia", 15),
("Alice", 14), ("Martina", 13)]}
w_surnames = { "France" : [ ("Matin", 10), ("Bernard", 10),
("Camille", 10), ("Nicolas", 9),
("Dubois", 10), ("Petit", 9),
("Durand", 8), ("Leroy", 8),
("Fournier", 7), ("Lambert", 6),
("Mercier", 5), ("Rousseau", 4),
("Mathieu", 2), ("Fontaine", 2),
("Muller", 1), ("Robin", 1)],
"Switzerland": [ ("Mller", 10), ("Meier", 10),
("Schmid", 9), ("Keller", 8),
("Weber", 9), ("Huber", 7),
("Schneider", 7), ("Meyer", 7),
("Steiner", 6), ("Fischer", 7),
("Gerber", 7), ("Brunner", 6),
("Baumann", 2), ("Frei", 4),
("Zimmermann", 1), ("Moser", 1)],
"Germany": [ ("Mller", 10), ("Schmidt", 10),
("Schneider", 9), ("Fischer", 8),
("Weber", 9), ("Meyer", 7),
("Wagner", 7), ("Becker", 7),
("Schulz", 6), ("Hoffmann", 7),
("Schfer", 7), ("Koch", 6),
("Bauer", 2), ("Richter", 4),
("Klein", 2), ("Schrder", 1)],
"Italy" : [ ("Rossi", 20), ("Russo", 19),
("Ferrari", 19), ("Esposito", 18),
("Bianchi", 16), ("Romano", 15),
("Colombo", 14), ("Ricci", 14),
("Marino", 12), ("Grecco", 11),
("Bruno", 10), ("Gallo", 12),
("Conti", 16), ("De Luca", 15),
("Costa", 14), ("Giordano", 13),
("Mancini", 14), ("Rizzo", 13),
("Lombardi", 11), ("Moretto", 9)]}
# separate names and weights
synthesize = {}
identifier = 1
for country in w_firstnames:
firstnames, weights = zip(*w_firstnames[country])
wsum = sum(weights)
weights_firstnames = [ x / wsum for x in weights]
w_firstnames[country] = [firstnames, weights_firstnames]
surnames, weights = zip(*w_surnames[country])
wsum = sum(weights)
weights_surnames = [ x / wsum for x in weights]
w_surnames[country] = [surnames, weights_firstnames]
synthesize[country] = synthesizer( (firstnames, surnames),
(weights_firstnames,
weights_surnames),
format_func=lambda x: " ".join(x),
repeats=False)
nation_prob = [("Germany", 0.3),
("France", 0.4),
("Switzerland", 0.2),
("Italy", 0.1)]
profession_prob = [("Medical Aid", 0.3),
("Social Worker", 0.6),
("Security Aid", 0.1)]
helpers = []
for _ in range(200):
country = weighted_cartesian_choice(zip(*nation_prob))
profession = weighted_cartesian_choice(zip(*profession_prob))
country, profession = country[0], profession[0]
s = synthesize[country]()
uid = "{id:05d}".format(id=identifier)
helpers.append((uid, country, next(s), profession ))
identifier += 1
print(helpers)
[('00001', 'Germany', 'Gabriele Mller', 'Medical Aid'), ('00002', 'France', 'Camille Lambert', 'Social Worker'), ('00003', 'Switzerland', 'Sarah Schmid', 'Medical Aid'), ('00004', 'France', 'Marie Mathieu', 'Social Worker'), ('00005', 'Italy', 'Leonardo Rizzo', 'Medical Aid'), ('00006', 'France', 'Julien Camille', 'Medical Aid'), ('00007', 'France', 'Manon Camille', 'Medical Aid'), ('00008', 'France', 'Manon Bernard', 'Social Worker'), ('00009', 'Germany', 'Peter Koch', 'Social Worker'), ('00010', 'Germany', 'Ursula Mller', 'Social Worker'), ('00011', 'Switzerland', 'Ocane Schmid', 'Social Worker'), ('00012', 'Germany', 'Matthias Schmidt', 'Social Worker'), ('00013', 'France', 'Laura Petit', 'Social Worker'), ('00014', 'France', 'Marie Durand', 'Social Worker'), ('00015', 'France', 'La Petit', 'Social Worker'), ('00016', 'France', 'Laura Bernard', 'Social Worker'), ('00017', 'Germany', 'Manfred Hoffmann', 'Security Aid'), ('00018', 'Switzerland', 'Sarah Schneider', 'Social Worker'), ('00019', 'Switzerland', 'Sarah Weber', 'Social Worker'), ('00020', 'France', 'Camille Leroy', 'Social Worker'), ('00021', 'France', 'Marie Mathieu', 'Medical Aid'), ('00022', 'Italy', 'Lorenzo Gallo', 'Medical Aid'), ('00023', 'France', 'Laura Bernard', 'Social Worker'), ('00024', 'Italy', 'Sofia Marino', 'Social Worker'), ('00025', 'Switzerland', 'Sarah Schneider', 'Security Aid'), ('00026', 'Germany', 'Ursula Hoffmann', 'Medical Aid'), ('00027', 'Italy', 'Aurora Rossi', 'Social Worker'), ('00028', 'France', 'Nicolas Durand', 'Social Worker'), ('00029', 'France', 'La Lambert', 'Social Worker'), ('00030', 'France', 'Julien Matin', 'Medical Aid'), ('00031', 'France', 'Chlo Bernard', 'Security Aid'), ('00032', 'Switzerland', 'Reto Steiner', 'Medical Aid'), ('00033', 'France', 'Clementine Matin', 'Medical Aid'), ('00034', 'France', 'Alexandre Matin', 'Social Worker'), ('00035', 'France', 'Nicolas Dubois', 'Medical Aid'), ('00036', 'Switzerland', 'Hans Huber', 'Social Worker'), ('00037', 'Germany', 'Andreas Wagner', 'Social Worker'), ('00038', 'Italy', 'Tommaso Colombo', 'Social Worker'), ('00039', 'Italy', 'Sofia Conti', 'Social Worker'), ('00040', 'Switzerland', 'Nomie Fischer', 'Social Worker'), ('00041', 'France', 'Chlo Lambert', 'Social Worker'), ('00042', 'France', 'Quentin Dubois', 'Social Worker'), ('00043', 'Italy', 'Mattia Grecco', 'Security Aid'), ('00044', 'France', 'Maxime Dubois', 'Social Worker'), ('00045', 'Italy', 'Mattia Rossi', 'Medical Aid'), ('00046', 'Switzerland', 'Laura Huber', 'Security Aid'), ('00047', 'Germany', 'Wolfgang Schneider', 'Medical Aid'), ('00048', 'Germany', 'Stefanie Mller', 'Social Worker'), ('00049', 'France', 'Quentin Petit', 'Social Worker'), ('00050', 'France', 'Quentin Nicolas', 'Social Worker'), ('00051', 'Germany', 'Wolfgang Mller', 'Social Worker'), ('00052', 'Switzerland', 'Eva Brunner', 'Social Worker'), ('00053', 'Germany', 'Brigitte Meyer', 'Medical Aid'), ('00054', 'Switzerland', 'Hans Keller', 'Social Worker'), ('00055', 'Switzerland', 'Nomie Schmid', 'Medical Aid'), ('00056', 'Germany', 'Ursula Schulz', 'Social Worker'), ('00057', 'France', 'Maxime Durand', 'Social Worker'), ('00058', 'France', 'Maxime Nicolas', 'Social Worker'), ('00059', 'France', 'Alexandre Bernard', 'Security Aid'), ('00060', 'Germany', 'Manfred Mller', 'Social Worker'), ('00061', 'Switzerland', 'Sarah Meyer', 'Medical Aid'), ('00062', 'Germany', 'Peter Becker', 'Social Worker'), ('00063', 'Italy', 'Aurora Conti', 'Medical Aid'), ('00064', 'Italy', 'Sofia Esposito', 'Medical Aid'), ('00065', 'France', 'Camille Mercier', 'Social Worker'), ('00066', 'France', 'Nicolas Nicolas', 'Security Aid'), ('00067', 'Germany', 'Wolfgang Mller', 'Medical Aid'), ('00068', 'France', 'Sandra Camille', 'Social Worker'), ('00069', 'France', 'Chlo Dubois', 'Social Worker'), ('00070', 'Switzerland', 'Laura Gerber', 'Social Worker'), ('00071', 'France', 'Chlo Lambert', 'Social Worker'), ('00072', 'Switzerland', 'Peter Schneider', 'Social Worker'), ('00073', 'France', 'Maxime Petit', 'Social Worker'), ('00074', 'France', 'Grgory Nicolas', 'Medical Aid'), ('00075', 'Switzerland', 'Peter Schneider', 'Social Worker'), ('00076', 'Switzerland', 'Urli Schneider', 'Social Worker'), ('00077', 'France', 'Julien Matin', 'Social Worker'), ('00078', 'Germany', 'Monika Wagner', 'Medical Aid'), ('00079', 'France', 'Thomas Leroy', 'Social Worker'), ('00080', 'France', 'Marie Mercier', 'Medical Aid'), ('00081', 'France', 'Julien Bernard', 'Social Worker'), ('00082', 'Germany', 'Matthias Hoffmann', 'Social Worker'), ('00083', 'France', 'Marie Durand', 'Medical Aid'), ('00084', 'Switzerland', 'Peter Mller', 'Social Worker'), ('00085', 'Germany', 'Ursula Schneider', 'Social Worker'), ('00086', 'Switzerland', 'Mlissa Brunner', 'Medical Aid'), ('00087', 'France', 'Chlo Rousseau', 'Social Worker'), ('00088', 'Switzerland', 'Urli Keller', 'Social Worker'), ('00089', 'France', 'Clementine Leroy', 'Social Worker'), ('00090', 'France', 'Manon Durand', 'Social Worker'), ('00091', 'France', 'Thomas Durand', 'Medical Aid'), ('00092', 'France', 'Quentin Dubois', 'Medical Aid'), ('00093', 'France', 'Manon Rousseau', 'Medical Aid'), ('00094', 'Switzerland', 'Nomie Steiner', 'Social Worker'), ('00095', 'Switzerland', 'Mlissa Steiner', 'Social Worker'), ('00096', 'Germany', 'Manfred Becker', 'Social Worker'), ('00097', 'Italy', 'Alice Gallo', 'Medical Aid'), ('00098', 'France', 'Quentin Muller', 'Social Worker'), ('00099', 'France', 'Chlo Fontaine', 'Medical Aid'), ('00100', 'Germany', 'Gabriele Fischer', 'Medical Aid'), ('00101', 'Switzerland', 'Mlissa Huber', 'Social Worker'), ('00102', 'Switzerland', 'Nomie Steiner', 'Social Worker'), ('00103', 'Switzerland', 'Laura Huber', 'Social Worker'), ('00104', 'Switzerland', 'Peter Gerber', 'Social Worker'), ('00105', 'France', 'Sandra Mathieu', 'Medical Aid'), ('00106', 'France', 'Marie Lambert', 'Social Worker'), ('00107', 'Germany', 'Andreas Mller', 'Social Worker'), ('00108', 'France', 'Marie Bernard', 'Social Worker'), ('00109', 'Germany', 'Ursula Koch', 'Social Worker'), ('00110', 'France', 'La Lambert', 'Social Worker'), ('00111', 'France', 'Manon Mercier', 'Social Worker'), ('00112', 'France', 'Maxime Lambert', 'Social Worker'), ('00113', 'Germany', 'Peter Mller', 'Social Worker'), ('00114', 'Switzerland', 'Laura Keller', 'Social Worker'), ('00115', 'France', 'Laura Leroy', 'Security Aid'), ('00116', 'France', 'La Camille', 'Social Worker'), ('00117', 'Switzerland', 'Sarah Schneider', 'Medical Aid'), ('00118', 'France', 'Alexandre Nicolas', 'Security Aid'), ('00119', 'Italy', 'Martina Giordano', 'Social Worker'), ('00120', 'France', 'Camille Bernard', 'Social Worker'), ('00121', 'Germany', 'Stefanie Hoffmann', 'Social Worker'), ('00122', 'France', 'Marie Nicolas', 'Social Worker'), ('00123', 'Germany', 'Thomas Mller', 'Security Aid'), ('00124', 'Germany', 'Nicole Weber', 'Social Worker'), ('00125', 'Germany', 'Andreas Meyer', 'Social Worker'), ('00126', 'France', 'Alexandre Dubois', 'Social Worker'), ('00127', 'Germany', 'Brigitte Klein', 'Social Worker'), ('00128', 'Switzerland', 'Peter Schneider', 'Security Aid'), ('00129', 'Germany', 'Peter Becker', 'Medical Aid'), ('00130', 'Switzerland', 'Urli Schneider', 'Security Aid'), ('00131', 'Germany', 'Monika Richter', 'Social Worker'), ('00132', 'France', 'Chlo Camille', 'Social Worker'), ('00133', 'France', 'Thomas Fournier', 'Medical Aid'), ('00134', 'Germany', 'Peter Schulz', 'Social Worker'), ('00135', 'Switzerland', 'Ocane Fischer', 'Social Worker'), ('00136', 'Germany', 'Michael Fischer', 'Medical Aid'), ('00137', 'France', 'Thomas Bernard', 'Medical Aid'), ('00138', 'France', 'Sandra Dubois', 'Social Worker'), ('00139', 'Germany', 'Andreas Hoffmann', 'Medical Aid'), ('00140', 'France', 'Maxime Mercier', 'Social Worker'), ('00141', 'France', 'La Leroy', 'Social Worker'), ('00142', 'Switzerland', 'Mlissa Meyer', 'Social Worker'), ('00143', 'Switzerland', 'Hans Frei', 'Social Worker'), ('00144', 'Switzerland', 'Laura Mller', 'Medical Aid'), ('00145', 'Germany', 'Wolfgang Schneider', 'Social Worker'), ('00146', 'Germany', 'Thomas Weber', 'Medical Aid'), ('00147', 'Switzerland', 'Nomie Meyer', 'Social Worker'), ('00148', 'France', 'Manon Dubois', 'Social Worker'), ('00149', 'France', 'Marie Bernard', 'Social Worker'), ('00150', 'France', 'Maxime Nicolas', 'Social Worker'), ('00151', 'Germany', 'Andreas Meyer', 'Medical Aid'), ('00152', 'France', 'Laura Mathieu', 'Social Worker'), ('00153', 'Switzerland', 'Sandra Keller', 'Medical Aid'), ('00154', 'France', 'Alexandre Mercier', 'Social Worker'), ('00155', 'Switzerland', 'Ocane Mller', 'Social Worker'), ('00156', 'Switzerland', 'Sarah Gerber', 'Medical Aid'), ('00157', 'France', 'Maxime Lambert', 'Medical Aid'), ('00158', 'Germany', 'Wolfgang Wagner', 'Medical Aid'), ('00159', 'France', 'Laura Leroy', 'Social Worker'), ('00160', 'France', 'Laura Dubois', 'Social Worker'), ('00161', 'Switzerland', 'Peter Weber', 'Social Worker'), ('00162', 'Italy', 'Mattia De Luca', 'Social Worker'), ('00163', 'Germany', 'Gabriele Becker', 'Social Worker'), ('00164', 'France', 'Quentin Camille', 'Social Worker'), ('00165', 'Germany', 'Manfred Bauer', 'Medical Aid'), ('00166', 'Italy', 'Lorenzo Ricci', 'Social Worker'), ('00167', 'France', 'Quentin Petit', 'Social Worker'), ('00168', 'France', 'Thomas Lambert', 'Social Worker'), ('00169', 'Germany', 'Matthias Richter', 'Medical Aid'), ('00170', 'France', 'Thomas Nicolas', 'Social Worker'), ('00171', 'Switzerland', 'Ocane Frei', 'Social Worker'), ('00172', 'France', 'Quentin Dubois', 'Social Worker'), ('00173', 'France', 'La Nicolas', 'Social Worker'), ('00174', 'Germany', 'Gabriele Schulz', 'Medical Aid'), ('00175', 'Germany', 'Monika Meyer', 'Medical Aid'), ('00176', 'Italy', 'Sofia Moretto', 'Social Worker'), ('00177', 'France', 'Marie Durand', 'Social Worker'), ('00178', 'Switzerland', 'Laura Meyer', 'Social Worker'), ('00179', 'Germany', 'Monika Schmidt', 'Social Worker'), ('00180', 'Germany', 'Stefanie Richter', 'Social Worker'), ('00181', 'France', 'Thomas Camille', 'Social Worker'), ('00182', 'France', 'Maxime Bernard', 'Social Worker'), ('00183', 'Germany', 'Gabriele Schneider', 'Security Aid'), ('00184', 'Germany', 'Peter Schmidt', 'Social Worker'), ('00185', 'France', 'La Matin', 'Medical Aid'), ('00186', 'Germany', 'Nicole Richter', 'Medical Aid'), ('00187', 'France', 'Philippe Bernard', 'Social Worker'), ('00188', 'Italy', 'Sofia Ricci', 'Medical Aid'), ('00189', 'Switzerland', 'Sandra Keller', 'Medical Aid'), ('00190', 'Germany', 'Gabriele Schulz', 'Social Worker'), ('00191', 'Italy', 'Alessandro Rossi', 'Social Worker'), ('00192', 'France', 'Quentin Mercier', 'Social Worker'), ('00193', 'Italy', 'Francesco Costa', 'Social Worker'), ('00194', 'Germany', 'Peter Mller', 'Social Worker'), ('00195', 'France', 'Nicolas Fontaine', 'Social Worker'), ('00196', 'Germany', 'Wolfgang Richter', 'Medical Aid'), ('00197', 'France', 'Thomas Dubois', 'Social Worker'), ('00198', 'Switzerland', 'Walter Baumann', 'Medical Aid'), ('00199', 'France', 'Alexandre Bernard', 'Medical Aid'), ('00200', 'Germany', 'Peter Wagner', 'Social Worker')]