首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问怎么随机获取这16个点中的一个点

2013-09-28 
请教如何随机获取这16个点中的一个点如上图所示起点是左下角绿色的点,坐标是 0,0而红色位置是中心点,坐标

请教如何随机获取这16个点中的一个点
请问怎么随机获取这16个点中的一个点

如上图所示



起点是左下角绿色的点,坐标是 0,0

而红色位置是中心点,坐标是6,6

我想要的是 获取红色点周围2坐标外的16个蓝色点

而且是随机获取这16个点,并且不会重复,一直获取16次,就把所有的都获取完了。



我自己写了个不太好,就是X+4 Y+4 获取左下角蓝色点

然后for i:=0 to 4 do  从x+4 y+4 一直X+1

就是把蓝色四周都for一下

取到16个点在随机一个个取,取一个删除一个/

貌似不太好,速度也不理想。

谁有简单快速的方法吗?
[解决办法]
给你说一个思路:
1.那16个点的坐标都是在中心点(6,6)的基础上XY轴加减正负2,故你只需要取X=Random(3),得到的结果是0 <= X < 3,即(0,1,2)这3个数,在这个随机数的基础上X * 2 -2,即得到(-2,0,2)作为坐标调整数。
2.建立一个列表,用于保存随机得到的点的坐标,循环判断列表的个数小于16时,根据第一步随机产生的坐标调整数产生新的坐标,判断列表里面是否存在,存在则取下一个,不存在则插入列表,然后继续循环判断直到列表数量=16个结束。
楼主拿分来!
[解决办法]
建立一个长度为16的数组或列表存放16个点; 获取0到15的随机数作为下标取数组值即可.
[解决办法]
把16个点的坐标放到数组里,再取随机数。哪点被取,将最后的一点和那个点交换,然后随机数范围减一。
[解决办法]
//静态数组声明示例如下
const
   ZuoBiao2: array[0..1] of TPoint =((X:0; Y:1), (X:0; Y:1));

楼主如果点数可变的话, 就用动态数组实现.

热点排行