在N x N网格中不重复随机选取K个格点坐标
虽然很简单的任务,然而本菜鸟对Julia很不熟,目前想到的办法是
Map = reshape([1:N*N;],N,:)
Grids = rand(1:N*N,K)
... # 然后再提取Grids[k]在Map中的索引位置
然而rand(1:N*N,K)
给出的是可重复的随机抽样,怎么让它不重复?以及提取Map
中某个元素的索引用什么命令我也不知道……
有无前辈指点一下?有更简单的方法实现更好。先谢了!
在N x N网格中不重复随机选取K个格点坐标
虽然很简单的任务,然而本菜鸟对Julia很不熟,目前想到的办法是
Map = reshape([1:N*N;],N,:)
Grids = rand(1:N*N,K)
... # 然后再提取Grids[k]在Map中的索引位置
然而rand(1:N*N,K)
给出的是可重复的随机抽样,怎么让它不重复?以及提取Map
中某个元素的索引用什么命令我也不知道……
有无前辈指点一下?有更简单的方法实现更好。先谢了!
https://docs.julialang.org/en/v1/stdlib/Random/#Generators-(creation-and-seeding)
https://docs.julialang.org/en/v1/base/collections/#Base.indexin
文档能回答你99.9%的问题。在你问题之前,我也不知道不熟悉julia的这两个api,但我知道文档里肯定有答案。
import Random
Grids = Random.randperm(N*N)
for k in 1:K
x[k], y[k] = cld(Grids[k], N), mod1(Grids[k], N)
end