我的数字范围是1-10,我想随机选出3个,但两次都不相同。在lua中,我使用了Fisher()的Fisher-Yates随机播放O(n),我知道python具有内置的random.sample()也是O(n)。可以在任意范围和选择次数内更快地完成这项工作吗?
答案 0 :(得分:0)
以O(n)的复杂度读取每个数字序列是不可能的,因为仅进行n次读取操作就将其变成线性复杂度。
P.S .:假设n是签数。如果您有一个数组,并且n是该数组的大小,并且拾取次数m是常数,则可以假设数组索引花费的时间是m次,并且可以使用任意方法生成m次随机索引数并获得O(1)。希望能回答您的问题,如果不能解决,请澄清。