- 670 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:03:38 ]
- >>664
#include<stdio.h> #include<stdlib.h> typedef struct tag_dataset{int index, data;}dataset_t; void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;} void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;} void encode(int data[], int datanum, int seed){ int i; srand(seed); for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]); } void decode(int data[], int datanum, int seed){ int i; dataset_t *tmp; srand(seed); tmp=malloc(sizeof(*tmp)*datanum); for(i=0;i<datanum;i++) tmp[i].index=i; for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]); for(i=0;i<datanum;i++) tmp[i].data=data[i]; for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data; free(tmp); } void prt(int data[], int datanum){ int i; for(i=0;i<datanum;i++) printf(" %d", data[i]); printf("\n"); } int main(void){ int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]); encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ return 0; }
|

|