在大圆内生成一个小圆,并在其半径内生成不同的随机数

时间:2015-04-18 07:46:15

标签: matlab

是否可以在半径为s且中心为(0,0)&的大圆内生成半径为r且中心不是(0,0)的小圆圈。在它们内部产生不同数量的随机点?例如,半径为r的10个点和半径为s的100个点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

检查以下代码段。您可能需要根据您的要求进行更新。作为一个例子,想一想如何避免过圈。

clear all;

i = 0;
j = 0;
r = 100;
nc = 2;

figure;
hold on;
axis equal;

viscircles([0 0], r, 'EdgeColor','r')

while i < nc
    rr = randi([-r r]);
    rc = randi([-r r]);
    d = pdist([rc rr; 0 0],'euclidean');
    r2 = randi([20 300]);
    if d<r && d+r2<r
        viscircles([rc rr], r2, 'EdgeColor','g')
        c = [rand rand rand];
        np = randi([1 10]);
        while j<np
            pc = randi([rc-r2 rc+r2]);
            pr = randi([rr-r2 rr+r2]);
            d2 = pdist([pc pr; rc rr],'euclidean');
            if d2<r2
                scatter(pc,pr,30,c,'filled');
                j = j+1;
            end
        end
        i = i+1;
    end
end

示例输出: enter image description here

相关问题