algorithm - 如何创建随机的非重叠坐标?
问题描述
我正在尝试创建一个函数,它将生成一个vec
长度,在某个边界之间n
具有随机x
和y
类型的坐标。具有这种坐标的每个点必须彼此之间具有最小距离。我正在尝试使用该功能,但我被卡住了。我应该使用特定的分布还是添加一些过滤器或条件来实现这一点?f64
(-b, b)
d
thread_rng()
extern crate rand; // 0.5.5
use rand::prelude::*;
use rand::distributions::Standard;
pub fn apply_random_pos(n: usize, min_distance: f64) -> Vec<(f64, f64)> {
let mut rng = thread_rng();
let mut x: f64;
let mut y: f64;
let mut positions: Vec<(f64, f64)> = Vec::with_capacity(n);
positions = thread_rng()
.sample_iter(&Standard)
.take(n)
.collect::<Vec<(f64, f64)>>();
positions
}
解决方案
推荐阅读
- db2 - db2 v7R1 - 触发器 INSERT New As XML Str
- mysql - MySQL:仅当另一列中的值唯一时才设置值
- php - 如何在 Firebird 中将 BLOB SUB_TYPE 0 转换为 TEXT?
- python - 在 pandas groupby DataFrame 中创建异常值列
- spring - Spring Websocket:如何通过任何 convertAndSend 或 convertAndSendToUser 方法拦截 SimpMessagingTemplate 发送的消息?
- xamarin - 使用 msbuild 命令行 xcarchive 到 ipa
- python - 以编程方式运行 Ansible 剧本?
- python - _mapnik 模块名称未找到
- c - 为什么这个 C 代码不起作用?
- memory - 如何使用 Intel Pin 在没有符号信息的可执行文件的用户定义函数中读取或写入内存值?