0,1の全順列をばらばらに作る

  • こちらの続き
  • 0,1が作る長さLランダムな順列を作るには
L<-5
Nseq<-10
matrix(sample(c(0,1),L*Nseq,replace=TRUE),Nseq,L)
  • これは、同一の順列が作られうる
  • すべての順列を作るには以下のようにしたけれど、これだと、できる順列の順序に規則があって、ランダムに作成したことにならない
expand.grid(rep(list(c(0,1)),L))
  • すべての順列を網羅しつつ、ランダムに作るとすれば
expand.grid(rep(list(c(0,1)),L))[sample(1:2^L),]
  • のように全順列を作った後で、順序を入れ替えればできる
> expand.grid(rep(list(c(0,1)),L))[sample(1:2^L),]
   Var1 Var2 Var3 Var4 Var5
1     0    0    0    0    0
9     0    0    0    1    0
7     0    1    1    0    0
10    1    0    0    1    0
24    1    1    1    0    1
2     1    0    0    0    0
25    0    0    0    1    1
27    0    1    0    1    1
31    0    1    1    1    1
3     0    1    0    0    0
30    1    0    1    1    1
8     1    1    1    0    0
5     0    0    1    0    0
13    0    0    1    1    0
26    1    0    0    1    1
19    0    1    0    0    1
32    1    1    1    1    1
18    1    0    0    0    1
20    1    1    0    0    1
4     1    1    0    0    0
23    0    1    1    0    1
6     1    0    1    0    0
12    1    1    0    1    0
15    0    1    1    1    0
22    1    0    1    0    1
17    0    0    0    0    1
28    1    1    0    1    1
21    0    0    1    0    1
29    0    0    1    1    1
11    0    1    0    1    0
14    1    0    1    1    0
16    1    1    1    1    0