Julia中如何从固定集合生成随机子集?有相关包或内置函数吗?
Julia 生成随机子集的实现方案
内置原生实现(无外部依赖)
不需要安装任何第三方包,直接用Julia标准库就能实现:
- 等概率生成任意大小的随机子集(包含空集、全集)
原理是每个元素被选中的概率独立为50%,所有可能子集的生成概率完全相等,示例代码:A = Set([1, 2, 3, 4, 5]) arr_A = collect(A) # 生成随机子集 random_subset = Set(arr_A[rand(Bool, length(arr_A))]) - 生成指定大小
k的随机子集
用标准库的无重复采样即可,示例代码:k = 3 # 要生成的子集大小 arr_A = collect(A) random_k_subset = Set(rand(arr_A, k, replace=false))
第三方包专用方法
有专门的第三方包封装了更高效、更易用的随机子集生成接口:
- StatsBase 包
是Julia生态常用的统计基础包,自带采样优化:
安装命令:import Pkg; Pkg.add("StatsBase")
用法示例:using StatsBase arr_A = collect(A) # 生成大小为k的随机子集 random_k_subset = Set(sample(arr_A, k, replace=false)) - RandomExtensions 包
有专门的rand_subset函数,直接支持集合输入,无需手动转换类型:
安装命令:import Pkg; Pkg.add("RandomExtensions")
用法示例:using RandomExtensions # 生成任意大小的等概率随机子集 random_subset = rand_subset(A) # 生成大小为k的随机子集 random_k_subset = rand_subset(A, k)
小提示:如果需要可复现的采样结果,可以在运行采样代码前执行
using Random; Random.seed!(自定义整数种子)固定随机数状态。
内容的提问来源于stack exchange,提问作者Tio Miserias
相关产品推荐
相关产品推荐

