----------------解决方案--------------------------------------------------------
生成随即数
用rand()
想随机生成25个点,任意点之间的距离≥0.8
: 1)生成第一个点并其放到一个数组里存起来
2)点之间距离 计算
#include<stdio.h>
#include<math.h>
main()
{
float s;
int x=10,y=10;
s=sqrt(x*x+y*y);
printf("%f",s);
getch();
}
3)在生成一个点 符合条件 (与前边所有确定的点的距离比较>0.8) 的点然后存到数组中..直到数组存满
我的思路是这样
但是这样写 的效率可能不高 别的方法还有
.........
[此贴子已经被作者于2007-3-25 15:17:04编辑过]
----------------解决方案--------------------------------------------------------
我觉得可以用筛法(效率比较低):
1:取1个点D1,把以这个点为圆心,半径为0.8的区域定义为S1;
2:随机生成1个点D2,如果不在S1内,将它的区域定义为S2;
如果在S1内,重新生成;
3:随机生成1个点Dn,如果不在S1、S2、...、S(n-1)内,将区域定义为Sn
不过有个问题:4×4=16,pi×0.4×0.4×25=12.57<16 ,空间的余量不多,有可能前面的点放了以后,最后几个点怎么也没法放进去,这时如果重新分配,效率就更低了。
想效率高必须对取点的范围加限制,这个就得好好想想了
----------------解决方案--------------------------------------------------------