c - Shuffle a struct -


i have struct have 6 members. want shuffle struct when user hits enter key struct members randomly prints out this:

first time:

member3 - member1 member4 - member6 member5 - member2 

second time:

member1 - member6 member3 - member5 member2 - member4 

and on long user hits enter kyboard members shuffle.

this have far:

 int main(void) {    struct members[] = {     { "member1", 0, 0, 0},     { "member2", 0, 0, 0},     { "member3", 0, 0, 0},     { "member4", 0, 0, 0},     { "member5", 0, 0, 0},      };      {     shuffle(members, 6)    }while(getch() != esc);  } 

edit: implementation of fisher-yates shuffle?

    static int rand_int(int n)     {   int limit = rand_max - rand_max % n;   int rnd;      {     rnd = rand();    }while(rnd >= limit);    return rnd % n;       }  void shuffle(members *s, int n) { int i, j; members tmp;  for(i = n - 1; > 0; i--) {     j = rand_int(i + 1);      tmp = s[j];     s[j] = s[i];     s[i] = tmp;      printf("%s\t - %s\n", s[j], s[i]); } } 

via wikipedia fisher yates shuffle:

to shuffle array of n elements (indexes 0..n-1):   n − 1 downto 1        j ← random integer 0 ≤ j ≤        exchange a[j] , a[i] 

the quirk you going have reassign each element of each struct during swap. easier, , more time-efficient way accomplish same thing have array of pointers swapping purposes


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -