以下をcygwinでコンパイルして実行すると変な数字の羅列が吐き出されてしまいます。
問題点等ありましたらご指摘ください。

#include <stdio.h>
#include <stdlib.h>

#define n 4

int main(void)
{
int k, l, l2, temp, a[n*(n-1)-1];

srand(time(NULL));

for(k=0; k<(n*(n-1))-1; k++) a[(n*(n-1))-1] = k;

for(l=n-1; l>0; l--) {
l2 = rand() / (RAND_MAX + 1.0) * (l + 1);
temp = a[l2];
a[l2] = a[l];
a[l] = temp;
}

for(k=0; k<n*(n-1)-1; k++) printf("%d ", a[k]);

return 0;
}