C言語: サイコロだかシャッフルだか.Fisher-Yates(のつもり)
単純なサイコロは作ったことあるのだけれど「重複を許さない」のが欲しいと言われたので作った.
苦労したのにデータを失くしそうで怖いから,ここに保存.
Fisher-Yatesのつもりだが,間違っているかもしれない.
シャッフルは成功している.ついでにtxtで保存も.
続きにソースコードを置いておく.
余談:
はてな記法とデザインのフッターとCSSを少し覚えたので,これもメモしないとすぐに忘れそう.
特にダブルクリックでソースコードを全選択できるの,すごく便利.好き.
#include <stdio.h> #include <stdlib.h> #include <time.h> #define card 7 void shuffle(int a[], int size) { int i = size; while (i > 1) { int j = rand() % i; i--; int t = a[i]; a[i] = a[j]; a[j] = t; } } int main() { FILE *file; char filewrite[64]; sprintf(filewrite, "shuffle.txt"); file = fopen(filewrite, "w"); srand((unsigned int)time(NULL)); for (int i = 0; i < 10; i++) { int values [card]; for (int k = 0; k < card; k++) { values[k] = k + 1; } shuffle(values, card); for (int j = 0; j < card; j++) { fprintf(file, "%d ", values[j]); } fprintf(file, "\n"); } fclose(file); return 0; }