【发布时间】:2018-08-07 12:39:20
【问题描述】:
我们需要为请求生成随机数,并且这些请求可以由任何用户随时生成。这导致了问题,我们必须检查之前生成的数字是否有重复,因为生成的数字应该是唯一的,并且不允许重复。
每批随机生成的数字在 220-225 左右,生成的数字将检查前一批是否有重复。无法在特定区间内生成数字。
至于解决方案,我们希望对生成的随机数进行排序,然后与新生成的批次比较是否有重复项,但是对于排序算法而言,这将需要相当大的复杂度 O(nlogn)。 同样在使用 HashSets 的解决方案中,用于存储数字的内存会很大。
有没有办法提高这样的算法的效率?
【问题讨论】:
-
这些都是很多随机数!为什么不枚举您范围内的所有数字并将它们洗牌?然后,每当有请求进来时,您只需输出接下来的 n 个数字。
-
preshing.com/20121224/… 可能也值得一看
-
谢谢,最后一个链接似乎有助于解决一些问题。
标签: algorithm performance duplicates bigdata