| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:[求助]:如何编写随机布点程序?
只看楼主 加入收藏
lizhiqiang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-10-4
收藏
 问题点数:0 回复次数:2 
[求助]:如何编写随机布点程序?
在4×4的正方形区域内,想随机生成25个点,任意点之间的距离≥0.8,也可以事先确定一个固定点如坐标(1,1),然后生成其他24个满足要求的点,如何编写程序,指点方法也行,谢谢大侠的帮忙
搜索更多相关主题的帖子: 布点 随机 编写 
2007-03-25 13:32
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 

生成随即数

用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编辑过]


哎 时间....................
2007-03-25 15:10
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

我觉得可以用筛法(效率比较低):
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 ,空间的余量不多,有可能前面的点放了以后,最后几个点怎么也没法放进去,这时如果重新分配,效率就更低了。
想效率高必须对取点的范围加限制,这个就得好好想想了


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-25 16:07
快速回复:[求助]:如何编写随机布点程序?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023599 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved