生成一个随机零的矩阵

时间:2017-11-01 01:20:49

标签: matrix random sparse-matrix

使用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();
     }
 }

是生成的矩阵稀疏矩阵?我该如何理解其中的差异?

1 个答案:

答案 0 :(得分:2)

我假设您希望不超过10%的矩阵具有非零值?如果你有一个真正的稀疏矩阵(数千或数百万个元素),可能要少得多。

我实际上不会去你要去的路线。我首先将数组初始化为全零。您可以使用int myArray[25] = {0}memset

执行此操作

完成后,您可以计算出所需的非零元素数量。如果您有30个元素并且想要10%非零元素,则需要填写3个元素。您可以谷歌并找出如何使用srand来计算将非零元素放在哪个索引。

完成后,您可以再次使用srand获取并设置要填写的实际值。

我故意没有在这里给出很多细节,只是我要采取的一般方向。尝试一些事情可能会很好,并提供实际编译的代码示例(您的示例没有,有一些未定义的变量)。