N x N网格中不重复随机选取K个格点坐标

在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://juliastats.org/StatsBase.jl/stable/sampling/#Sampling-API-1

1 个赞

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,但我知道文档里肯定有答案。

2 个赞
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

补充:有条件用谷歌搜索,stack论坛或 overflow基本大多都有解答。

using StatsBase: sample

2 个赞