如何将Javascript数组中的元素随机设置为零?

如何将Javascript数组中的元素随机设置为零?,javascript,matrix,Javascript,Matrix,我有一个带构造函数的javascript矩阵类 class Matrix { constructor(rows, cols) { this.rows = rows; this.cols = cols; this.data = Array(this.rows).fill().map(() => Array(this.cols).fill(0)); } 现在我有一个矩阵,即weights\u1,大小为32*64 如何在权重_1中随机选择一些元素并使其为

我有一个带构造函数的javascript矩阵类

    class Matrix {
  constructor(rows, cols) {
    this.rows = rows;
    this.cols = cols;
    this.data = Array(this.rows).fill().map(() => Array(this.cols).fill(0));
  }
现在我有一个矩阵,即
weights\u1
,大小为32*64

如何在
权重_1
中随机选择一些元素并使其为零?例如,我想将
权重中30%的元素设置为零。

如何

this.data = Array(this.rows).fill().map(() => Array(this.cols).fill(Math.floor(Math.random() * 100) > 30 ? 1 : 0));

这将随机(大约)将30%的值设置为0,将其他值设置为1。

这里有一个解决方案,可以确保结果为30%,而不仅仅是“大约30%”。变量命名应该使一切都不言自明。我用过洗牌,但是如果你喜欢自己做那部分,你可以参考javascript中关于洗牌的内容

类矩阵{
构造函数(行、列){
this.rows=行;
this.cols=cols;
this.data=Array(this.rows.fill().map(()=>Array(this.cols.fill)(999));
}
零输出百分比(百分比){
var totalweights=this.rows*this.cols;
var numberOfWeightsToZeroOut=数学地板(总重量*(百分比/100));
var weightsToZeroOut=随机序列(总重量)。切片(0,numberOfWeightsToZeroOut);
对于(var i=0;i

Array.from({length:100},=>Math.random()<0.3?0:666)嗨,有没有办法改变权重?因为我已经生成了一个名为weights_1的矩阵,它在这个矩阵中已经有值,我想将其中一些值改为零,其他元素将保持不变。您必须执行
weights_1.map((arr)=>arr.map((val)=>Math.floor(Math.random()*100)>30?val:0))