< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> | #include <stdlib.h> #include <time.h> int main(void) { int cards[10]={0,1,2,3,4,5,6,7,8,9}; int n;//カード番号を退避する(手に持つカード) int index;//抜き取るカード位置を保持する変数 int i; srand(time(NULL)); for(i=0;i<1000;i++){//1000回ぐらい切ってみましょう index=rand()%10;//有効範囲は0〜9 n=cards[index]; for(;index;index--)cards[index]=cards[index-1];//(1) cards[0]=n; } //どれくらいシャッフルできているか、確認してみます。 for(i=0;i<10;i++)printf("cards[%d]:%d\n",i,cards[i]); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> < 29> < 30> < 31> < 32> < 33> < 34> < 35> < 36> < 37> < 38> < 39> | #include <stdlib.h> #include <time.h> int main(void) { int src1[5]={0,1,2,3,4}; int src2[5]={5,6,7,8,9}; int cards[10]; int src1_used,src2_used,cards_used; int i; srand(time(NULL)); for(i=0;i<200;i++){//今回は200回ぐらい切ってみましょう src1_used=0; src2_used=0; for(cards_used=0;cards_used<10;cards_used++){ if(((src1_used<5)&&(rand()%2))||(src2_used>=5)){ cards[cards_used]=src1[src1_used]; src1_used++; } else{ cards[cards_used]=src2[src2_used]; src2_used++; } } for(cards_used=0;cards_used<5;cards_used++){//(1)山1を作り直します src1[cards_used]=cards[cards_used]; } for(;cards_used<10;cards_used++){//(2)山2を作り直します src2[cards_used-5]=cards[cards_used];//(3) } } //どれくらいシャッフルできているか、確認してみます。 for(i=0;i<10;i++)printf("cards[%d]:%d\n",i,cards[i]); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> < 29> < 30> < 31> < 32> | #include <stdlib.h> #include <time.h> int main(void) { int cards[10]; int i,n,cnt; srand(time(NULL)); cnt=0; while(cnt<10){ n=rand()%10; for(i=0;i<cnt;i++)if(n==cards[i])break; /*↑の行は↓と同義です(一行構文に一行構文が繋がっているだけ) for(i=0;i<cnt;i++){ if(n==cards[i]){ break; } } 注釈ここまで*/ if(i==cnt){ cards[cnt]=n; cnt++; } } //どれくらいシャッフルできているか、確認してみます。 for(i=0;i<10;i++)printf("cards[%d]:%d\n",i,cards[i]); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> | #include <stdlib.h> #include <time.h> int main(void) { int src[10]={0,1,2,3,4,5,6,7,8,9},cards[10]; int n,srccnt; int i; srand(time(NULL)); for(srccnt=10;srccnt;srccnt--){ n=rand()%srccnt; cards[10-srccnt]=src[n]; src[n]=src[srccnt-1]; } //どれくらいシャッフルできているか、確認してみます。 for(i=0;i<10;i++)printf("cards[%d]:%d\n",i,cards[i]); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> | #include <stdlib.h> #include <time.h> int main(void) { int cards[10]={0,1,2,3,4,5,6,7,8,9}; int n1,n2,n3,i; srand(time(NULL)); for(i=0;i<1000;i++){//1000回シャッフル n1=rand()%10; n2=rand()%10; n3=cards[n1]; cards[n1]=cards[n2]; cards[n2]=n3; } //どれくらいシャッフルできているか、確認してみます。 for(i=0;i<10;i++)printf("cards[%d]:%d\n",i,cards[i]); //終了待ち getchar(); return 0; } |