如何确保torch.randint生成的结果包含范围内所有值至少一次?
生成包含0-9所有值至少一次的15个随机数
PyTorch实现方案
核心逻辑:先确保覆盖0-9的全部数值,再补充剩余数量的随机值,最后整体打乱顺序。
import torch # 生成0-9的随机排列,保证每个值至少出现一次 full_set = torch.randperm(10) # 生成额外的5个0-9之间的随机数 extra_values = torch.randint(low=0, high=10, size=(5,)) # 拼接两部分并打乱顺序 combined = torch.cat([full_set, extra_values]) shuffled_indices = torch.randperm(combined.numel()) final_result = combined[shuffled_indices] print(final_result) # 示例输出:tensor([5, 9, 3, 7, 0, 2, 7, 1, 4, 6, 8, 9, 0, 5, 2])
Python原生实现方案
如果不需要依赖PyTorch,用标准库也能实现同样需求:
import random # 先构建包含0-9的列表并打乱 full_set = list(range(10)) random.shuffle(full_set) # 生成额外5个随机数 extra_values = [random.randint(0, 9) for _ in range(5)] # 合并后再次打乱 final_result = full_set + extra_values random.shuffle(final_result) print(final_result) # 示例输出:[7, 0, 9, 2, 5, 7, 1, 4, 8, 6, 3, 0, 5, 9, 3]
内容的提问来源于stack exchange,提问作者Ssong
相关产品推荐
相关产品推荐

