你有10亿个数字,实现getRandom(),从中返回一个随机数

时间:2012-03-07 03:48:45

标签: algorithm

  

可能重复:
  Algorithm to select a single, random combination of values?

这是我在网上看到的一个采访问题。

  

你有十亿个数字,实现getRandom()返回一个   来自他们的随机数。

     

Constaints:   1.没有重复的返回值。   2. getRandom()最多可被调用1亿次。   然后优化空间。

这个解决方案怎么样,哪些更好?

随机播放数字数组。保持计数器从0开始。每次用户调用getRandom时,返回计数器索引处的值。增加柜台。

1 个答案:

答案 0 :(得分:-1)

让我们假设你有一个随机函数以相同的概率返回10。 您可以调用此函数32次,以获得02^(32)-1之间的随机数。 您可以调用此函数64次,以获得02^(64)-1之间的随机数。