それぞれが 1024 個の要素 0 または 1 を含むランダムな線形独立バイナリ ベクトルのシーケンスを継続的に生成しようとしています。1024 個 (取得できる最大値でもあります) を生成する必要があります。これが私がやったことの基本的な考え方です
srand( (unsigned) time(NULL) );
while(obtained <= 1024)
{
for (int i=0;i<1024;i++)
vector[i] = rand() % 2;
check linear indepence against previously stored linearly independent vectors
if (linearly independent)
store it;
obtained += 1;
else
discard;
}
ただし、コードはここで 527 個の線形独立ベクトルしか生成できないようです。これは非常に奇妙です。srand() をループに入れた場合、つまり各 rand() 実行の前に、1024 個のそのようなベクトルの生成を完了することができるため、乱数ジェネレーターの問題である可能性があることがわかりました。ただし、プログラムは非常に遅くなります。
また、2 進体ではなく、ガロア体 GF(4) 以上から選択された要素から構成される 1024 個の 1024 次元ランダム線形独立ベクトルを生成したい場合、上記のコード セグメントが正常に機能することも興味深いです。
ここでの線形独立性は、有限体での操作に関するものであることに注意してください。
考えられる理由を説明し、検討すべき方向性を提案できる人はいますか? 心から感謝します。