使用C我试图生成一个矩阵,该矩阵必须具有比非零元素更多的零元素。零元素应该是随机的如何生成它。
我能够生成随机数,其中一些元素为零,但零元素应该大于非零元素
int main(){
srand(time(NULL));
int array[25];
int i;
for (i=0;i<s;i++){
if (rand()%3 == 0)
array[i]=rand()%3;
else
array[i] = rand();
}
}
是生成的矩阵稀疏矩阵?我该如何理解其中的差异?
答案 0 :(得分:2)
我假设您希望不超过10%的矩阵具有非零值?如果你有一个真正的稀疏矩阵(数千或数百万个元素),可能要少得多。
我实际上不会去你要去的路线。我首先将数组初始化为全零。您可以使用int myArray[25] = {0}
或memset
。
完成后,您可以计算出所需的非零元素数量。如果您有30个元素并且想要10%非零元素,则需要填写3个元素。您可以谷歌并找出如何使用srand
来计算将非零元素放在哪个索引。
完成后,您可以再次使用srand
获取并设置要填写的实际值。
我故意没有在这里给出很多细节,只是我要采取的一般方向。尝试一些事情可能会很好,并提供实际编译的代码示例(您的示例没有,有一些未定义的变量)。