我正在尝试连续生成一系列随机线性独立的二进制向量,每个向量包含 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 个这样的向量。但是,程序会很慢。
另外,有趣的是,如果我想生成 1024 个 1024 维随机线性独立向量,这些向量由从 Galois 域 GF(4) 或更高域而不是二进制域中选择的元素组成,上面的代码段可以正常工作。
请注意,这里的线性独立性是在有限域中的操作方面。
任何人都可以帮助解释可能的原因并建议一些方向吗?衷心感谢。