Matrix 生成具有随机零的矩阵

Matrix 生成具有随机零的矩阵,matrix,random,sparse-matrix,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

使用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();
     }
 }
intmain(){
srand(时间(空));
int数组[25];
int i;

对于(i=0;i我假设您想要的非零值矩阵不超过10%?如果您有一个真正的大稀疏矩阵(数千或数百万个元素),可能会少很多

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

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

获得这些值后,您可以再次使用
srand
获取并设置要填写的实际值


我特意没有在这里给出太多细节,只是一个大致的方向。尝试一些东西并提供实际编译的代码示例可能会很好(您的示例没有,有一些变量没有定义)。

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