从列表中分配两个不同的随机数序列,相似数字的概率为n%

时间:2013-12-09 07:18:45

标签: matlab random probability

请先看一下图片。我们在网络中分发一些节点。该网络还分为9个相同的小区。

图片(简化示例):http://i.imgur.com/QbnQ4Kl.jpg

首先,我随机地在字段中分配我的节点。现在我想从chlist中为每个节点(a,b,c ...)分配10个随机值。但问题是节点“a”,节点“b”必须采用70%相同的值。换句话说,如果两个节点在同一个单元格中,例如在[0,10; 0,10]或[10,20; 20,30]的情况下,它们必须具有70%相同的值。

除非手动为每个细胞分配值而不是随机分配,否则我无法想到任何事情。像下面的代码,虽然它不精确,我只是想看看我是如何解决问题的。

xm=30;
ym=30;
n=15;
for i=1:1:n
S(i).xd=rand(1,1)*xm;
XR(i)=S(i).xd;
S(i).yd=rand(1,1)*ym;
YR(i)=S(i).yd;
end

for i=1:1:n
if ( 0 <= XR(i) &&  XR(i)<=10 && 0 <= YR(i) && YR(i)<=10)
    chlist(i, :)=[1 2 3 4 5 6 7 8 9 10];

elseif ( 0 <= XR(i) &&  XR(i)<=10 && 10 <= YR(i) && YR(i)<=20)
    chlist(i, :)=[1 2 3 4 5 6 7 10 11 13];

elseif ( 0 <= XR(i) &&  XR(i)<=10 && 20 <= YR(i) && YR(i)<=30)
    chlist(i, :)=[1 3 5 7 8 9 10 11 12 13];

elseif ( 10 <= XR(i) &&  XR(i)<=20 && 10 <= YR(i) && YR(i)<=10)
    chlist(i, :)=[1 3 5 7 8 9 10 11 13 15];

elseif ( 10 <= XR(i) &&  XR(i)<=20 && 20 <= YR(i) && YR(i)<=20)
    chlist(i, :)=[1 2 3 4 5 6 7 10 11 13];

elseif ( 10 <= XR(i) &&  XR(i)<=20 && 30 <= YR(i) && YR(i)<=30)
    chlist(i, :)=[1 3 5 7 8 9 10 11 12 13];

elseif ( 20 <= XR(i) &&  XR(i)<=30 && 10 <= YR(i) && YR(i)<=10)
    chlist(i, :)=[1 3 5 7 8 9 10 11 13 15];

elseif ( 20 <= XR(i) &&  XR(i)<=30 && 20 <= YR(i) && YR(i)<=20)
    chlist(i, :)=[3 4 5 6 7 10 11 13 15 16];

elseif ( 20 <= XR(i) &&  XR(i)<=30 && 30 <= YR(i) && YR(i)<=30)
    chlist(i, :)=[1 2 4 7 8 9 10 11 12 15];
end
end

或者我能做到的另一种方法是使用以下代码:

for i=1:n
chlist(i,:)= randperm(13,10);
end

由于节点从13个中挑选10个值,因此它们肯定有7个相似的值,这可以类似于70%的相似性。但是仍然在每个单元格中,我们有超过2个值,它可能不起作用。

任何帮助都非常感谢。

0 个答案:

没有答案