让我们说我有一个div,然后插入其他带有随机生成的位置值的div(上,左)。
我喜欢不使元素重叠的算法。我可以将位置设置为相对位置,但元素会溢出容器。
for (var i = 0 ; i < 20 ; i++)
{
var elem = $(document.createElement('div'));
elem.attr('class', 'child').
css
({
'top': Math.floor(Math.random()*((height-50)-30+1)+30),
'left': Math.floor(Math.random()*((width-50)-30+1)+30),
'width' : 30,
'height': 30
});
$('#wrapper').append(elem);
}
答案 0 :(得分:0)
如果你没有相对于你的总面积放置很多物体,你可以检测交叉点并重新取样,如果你得到一个交叉点。顺便说一下,如果你想从区域中分配k个非重叠对象的方式获得统一的随机样本,那么选择全局一致随机的第一个对象然后保持它是固定的不是正确的方法,因为对象位置可能是有偏见以避免重叠。你最好在一些初始的非重叠分配中将物体彼此均匀地隔开,然后继续选择一个物体并稍微摆动它的位置,当你与另一个物体碰撞时改变方向。如果你这样做了足够多次,你将基本上从你真正想要的样本中随机抽取样本。