Python中有序随机选择问题:生成起始为0且递增1的输出数组
嘿,这个需求我熟!用Python自带的random模块就能完美解决,分不同场景给你写具体实现哈~
场景1:从0到5之间选取5个不重复的数字
首先,我们要生成的目标数组是[0,1,2,3,4,5],用list(range(6))就能快速搞定(range(6)会生成0到5的整数序列,转成列表就是我们要的递增数组)。然后用random.sample()做无放回抽样,确保选出来的5个元素不重复:
import random # 生成0到5的递增数组 target_array = list(range(6)) # 随机选5个不重复元素 selected_nums = random.sample(target_array, k=5) print(selected_nums) # 示例输出:[3, 0, 5, 1, 2](每次运行结果会不一样)
场景2:重基场景(自定义起始值的递增数组)
如果“重基”是指你需要的数组不是从0开始,而是从某个自定义的起始值开始递增1(比如从3开始到8结束),只需要调整range()的参数就行,同样可以用sample或choices来选择:
import random # 自定义起始和结束值,生成递增数组 start_num = 3 end_num = 8 target_array = list(range(start_num, end_num + 1)) # range左闭右开,所以end要+1 # 比如选6个不重复元素 selected_nums = random.sample(target_array, k=6) print(selected_nums) # 示例输出:[5, 3, 8, 6, 7, 4]
场景3:从0到5之间选取15个数字(允许重复)
因为0到5只有6个不同元素,要选15个肯定会有重复,这时候用random.choices()做有放回抽样就可以了:
import random target_array = list(range(6)) # 随机选15个元素,允许重复 selected_nums = random.choices(target_array, k=15) print(selected_nums) # 示例输出:[0, 2, 5, 2, 4, 1, 0, 3, 5, 5, 1, 3, 2, 4, 0]
小技巧:固定随机结果(方便调试)
如果需要每次运行都得到一样的随机结果,可以在代码开头设置随机种子:
random.seed(42) # 随便设一个整数,固定种子后结果就不变了
内容的提问来源于stack exchange,提问作者Aenaon
相关产品推荐
相关产品推荐

