Time Stalker: てきとーろぐ

メモを残したいものなどを雑に

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;
}