在O(1)空间中生成从1到n的无重复的随机数

Man*_*mar 5 algorithm data-structures

一种方法是使用n这样的大小数组a[i]=i.

现在洗牌吧.

然后使用循环打印数字.但是可以在不使用阵列的情况下完成吗?

Ps:请不要使用任何内置的随机生成器功能.我试图得到一个合乎逻辑的答案,并自己编写随机函数.

loo*_*eer 0

这个答案是基于Python的,但你可以与你喜欢的任何其他编程语言相关。

import random # using random class
some_num = _ # any number
sample_num = _ # this should be less than or equal some_num
for num in random.sample(range(some_num), sample_num):
    print(num)
Run Code Online (Sandbox Code Playgroud)

这会生成随机数并使用循环打印它们。

  • “random.sample”是否声称不使用任何额外的内存?这是值得怀疑的,除非你能解释它是如何做到的。 (3认同)