【发布时间】:2016-07-28 15:59:16
【问题描述】:
我知道以前有人问过类似的问题,但请耐心等待。
我有一个数组:
int [] arr = {1,2,3,4,5,6,7,8,9};
我希望数字随机生成 10 次。像这样的:
4,6,8,2,4,9,3,8,7
虽然有些数字是重复的,但没有一个数字会连续生成超过一次。所以不是这样的:
7,3,1,8,8,2,4,9,5,6
如您所见,数字 8 在生成后立即重复。这不是我们想要的效果。
所以基本上,我可以接受重复的数字,只要它连续出现不超过一次。
【问题讨论】:
-
给我们看一些代码。您尝试了什么,遇到了什么问题?
-
这个问题被称为“无放回随机抽样”。研究得很透彻。
-
@AShelly:除了这不是这里的问题。你说的问题是重复想要never重复一个数字。 OP 的问题是避免连续两次重复给定数字,但您可以合法地产生
8, 4, 8。如果这是重复的,我不会感到惊讶,但它不是您在作为重复关闭时链接的那个。 -
我明白了,我很抱歉。
-
@kiraa 的答案是具有确定性时间的正确解决方案。