#include #include #include #include int total_people=0; time_t tt; static long state1[32] = { 3, 0x9a319039, 0x32d9c024, 0x9b663182, 0x5da1f342, 0x7449e56b, 0xbeb1dbb0, 0xab5c5918, 0x946554fd, 0x8c2e680f, 0xeb3d799f, 0xb11ee0b7, 0x2d436b86, 0xda672e2a, 0x1588ca88, 0xe369735d, 0x904f35f7, 0xd7158fd6, 0x6fa6f051, 0x616e6b96, 0xac94efdc, 0xde3b81e0, 0xdf0a6fb5, 0xf103bc02, 0x48f340fb, 0x36413f93, 0xc622c298, 0xf5a42ab8, 0x8a88d77b, 0xf5ad9d0e, 0x8999220b, 0x27fb47b9 }; struct DATA_T{ int randno; float ct; char name[30]; } data[30]; static char *couples[][2] = { {"Abi", "Chris"}, {"Barry", "Ev"}, {"Rob", "Karen"}, {"Mike", "Jennifer"}, {"Laura", "Henry"}, {"Sonia", "Sanjiv"}, {"Heather", "RobE"}, {"", ""} }; int find_index( char *name ) { int i; for (i=0; i=0) { data[i].ct = data[i].ct; data[j].ct = data[i].ct; } } } int numcmp(struct DATA_T *a, struct DATA_T *b) { return (b->ct - a->ct); } int datacmp(struct DATA_T *a, struct DATA_T *b) { return (a->randno - b->randno); } main(int argc, char *argv[]) { int max_people; unsigned seed; int n; int r,i,j,ct; tt = time( NULL ); seed = tt; n = 128; initstate(seed, (char *) state1, n); setstate(state1); random(); if ((argc<2) || (sscanf(argv[1],"%d", &max_people) != 1)) { printf("%s MAX names\n", argv[0]); printf(" Don't include the host(s), subtract them from MAX\n"); exit(0); } for (i=0; i<30; i++) { data[i].ct=0; data[i].name[0]=0; } for (ct=0; ct<100; ct++) { for (j=0, i=2; argv[i]; j++, i++) { r=random(); data[j].randno=r; if (data[j].name[0] == 0) { strcpy(data[j].name, argv[i]); total_people++; } } qsort( data, total_people, sizeof(struct DATA_T), datacmp); for (j=0; j