Javascript 在SVG圆内绘制随机点,使其不集中在中心

Javascript 在SVG圆内绘制随机点,使其不集中在中心,javascript,svg,d3.js,plot,Javascript,Svg,D3.js,Plot,我需要在一个半径为R的圆内随机绘制点的数量。当我试着用随机的θ和从圆心到圆心的随机距离来做这件事时,点集中在圆心上,这是理所当然的。有没有一种方法可以让它们随机分布在下图所示的圆圈上 所需输出: 电流输出: 下面是D3.js中当前输出的代码: while(count){ (count is the number of points to be plotted inside the circle) var randAngle = Math.random()*Math.PI*2

我需要在一个半径为R的圆内随机绘制点的数量。当我试着用随机的θ和从圆心到圆心的随机距离来做这件事时,点集中在圆心上,这是理所当然的。有没有一种方法可以让它们随机分布在下图所示的圆圈上

所需输出:

电流输出:

下面是D3.js中当前输出的代码:

while(count){ (count is the number of points to be plotted inside the circle)

        var randAngle = Math.random()*Math.PI*2;
        var randRadius = Math.random()*radius; (radius is the radius of the circle in which I want to plot)
        var randX = cx + randRadius * Math.cos(randAngle);
        var randY = cy + randRadius * Math.sin(randAngle);

    
        parent_group_dns.append('rect')
                        .attr('x', randX)
                        .attr('y', randY)
                        .attr('width', 1.5)
                        .attr('height', 1.5)
                        .attr('fill', 'white')

        count--;
    }

有没有办法不按θ而是按距离来分布点?

这可能对你有用,因为你是在极坐标系中生成点的。相反,在笛卡尔坐标中生成它们,然后根据它们是否在圆内来剔除它们try
var randRadius=Math.sqrt(~~(Math.random()*radius*radius))
还可以阅读@ThatCoolCoder,它很有用。Thanks@enxaneta工作!我现在明白原因了。非常感谢。这可能对你有用,因为你在极坐标系中生成点。相反,在笛卡尔坐标中生成它们,然后根据它们是否在圆内来剔除它们try
var randRadius=Math.sqrt(~~(Math.random()*radius*radius))
还可以阅读@ThatCoolCoder,它很有用。Thanks@enxaneta工作!我现在明白原因了。多谢。