如何在Julia中按组生成随机整数

Miz*_*zle 6 julia

首先,我想将1到n的整数均分为m组。

其次,我想生成随机整数,而不用 Julia 在每组中进行替换。

第三,我想组合所有随机整数。

例如,n=10000,m=2。那么朱莉娅代码将是

using Distributions
n=10000
order1 = sample(1:5000, 5000, replace = false)
order2 = sample(5001:10000, 5000, replace = false)
order=[order1;order2]
Run Code Online (Sandbox Code Playgroud)

例如,n=10000,m=5。那么朱莉娅代码将是

using Distributions
n=10000
order1 = sample(1:2000, 2000, replace = false)
order2 = sample(2001:4000, 2000, replace = false)
order3 = sample(4001:6000, 2000, replace = false)
order4 = sample(6001:8000, 2000, replace = false)
order5 = sample(8001:10000, 2000, replace = false)
order=[order1;order2;order3;order4;order5]
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否可以改进上面的 Julia 代码。如果m=100。那么我的代码将会非常长。必须有一种更简单的方法来做到这一点。

Prz*_*fel 3

假设你有例如。n=30m=5(请注意n % m == 0)。\n然后您可以创建用于保存名为 的结果的位置x

\n
x = collect(1:n);\n
Run Code Online (Sandbox Code Playgroud)\n

现在你可以做这个衬垫(这需要using Random):

\n
shuffle!.(eachcol(reshape(x, n \xc3\xb7 m, m)));\n
Run Code Online (Sandbox Code Playgroud)\n

让我们看看结果(您有 5 个组,每个组中的值都是随机排序的,没有重复):

\n
julia> x'\n1\xc3\x9730 adjoint(::Vector{Int64}) with eltype Int64:\n 1  5  3  2  4  6  12  10  8  9  7  11  16  18  13  14  15  17  24  21  23  22  20  19  26  25  27  30  29  28\n
Run Code Online (Sandbox Code Playgroud)\n