是否有可能比O(n)更快地生成不同的随机数?

时间:2019-01-28 14:52:56

标签: random time-complexity

我的数字范围是1-10,我想随机选出3个,但两次都不相同。在lua中,我使用了Fisher()的Fisher-Yates随机播放O(n),我知道python具有内置的random.sample()也是O(n)。可以在任意范围和选择次数内更快地完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

以O(n)的复杂度读取每个数字序列是不可能的,因为仅进行n次读取操作就将其变成线性复杂度。

P.S .:假设n是签数。如果您有一个数组,并且n是该数组的大小,并且拾取次数m是常数,则可以假设数组索引花费的时间是m次,并且可以使用任意方法生成m次随机索引数并获得O(1)。希望能回答您的问题,如果不能解决,请澄清。