【问题标题】:generate a matrix with random zeros生成一个随机零矩阵
【发布时间】:2017-11-01 10:18:24
【问题描述】:

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

生成的矩阵是稀疏矩阵吗?我如何理解其中的区别?

【问题讨论】:

  • 你想要的是均匀随机分布吗?

标签: matrix random sparse-matrix


【解决方案1】:

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

我实际上不会走你要走的路。我首先将数组初始化为零。您可以使用int myArray[25] = {0}memset 来做到这一点。

一旦你有了它,你就可以计算出你需要多少个非零元素。如果您有 30 个元素,并且想要 10% 的非零元素,则需要填写 3 个元素。您可以四处搜索并了解如何使用srand 来计算将非零元素放置在哪些索引处。

一旦你有了这些,你可以再次使用srand 来获取和设置要填写的实际值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2016-02-15
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2015-11-26
    相关资源
    最近更新 更多