gpt4 book ai didi

c++ - 在一个范围内生成不同的随机数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:22 26 4
gpt4 key购买 nike

<分区>

我想生成 n 个介于 1 和 N 之间的不同数字(当然 n<=N)。 N 可能非常大。如果 n 非常小,一种有效的方法是生成一个数字并将其与我们必须确保它是一个新数字的集合进行比较。它需要 O(n^2) 时间和 O(n) 内存。如果 n 很大,我们可以使用 Fisher–Yates shuffle 算法生成随机排列(在 n 步后停止)。它需要 O(n) 的时间,但我们也必须使用 O(N) 的内存。

问题来了。如果我们不知道 n 有多大,我们该怎么办?我希望该算法只使用 O(n) 内存并在 O(n) 时间后停止。这可能吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com