【发布时间】:2012-11-25 04:21:55
【问题描述】:
完整的问题是:
编写一个方法,从大小为
n的数组中随机生成一组 m 个整数。每个元素必须有相同的被选中概率`
这个问题是从“Crack the coding interview”中挑选出来的,答案是这样的:
我们可以将元素与数组开头的元素交换,然后“记住”数组现在只包含
j和更大的元素。也就是说,当我们选择subset[0]为array[k]时,我们将array[k]替换为数组中的第一个元素。当我们选择subset[1]时,我们认为array[0]是“死的”,我们会在1 和数组size()之间选择一个随机元素y。然后我们设置subset[1]等于array[y],设置array[y]等于array[1]。元素 0 和 1 现在“死”了。Subset[2]现在从array[2]到array[array size()]中选择,依此类推。
我的问题是,如果我们缩小从中选择随机数的数组,那么每个数字被选择的概率1/remaining_num_elements。它如何对所有元素保持相等?
【问题讨论】:
标签: random probability