【发布时间】:2014-07-01 11:06:48
【问题描述】:
如何生成 9 个 1 到 9 之间的随机数,不重复,一个接一个。就像是: 假设生成的第一个随机数是 4,那么下一个随机数必须在 [1, 9] - {4} 中。 我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了 6 个并且我们必须再生成 3 个数字,这个过程会有点慢。而当范围从 [1, 9] 更改为 [1, 1000] 时,这种方法听起来并不正确。 谁能建议一种替代方法。
【问题讨论】:
-
您可以将刚刚选择的数字与末尾的数字交换,并假设在下一步中您将从一个元素短的数组中进行选择。
-
生成一个数字并计算其
frequency..如果frequency > 0生成另一个随机数和add或subtract或做一些数学运算以获得另一个数字..尽管这也将是非常忙碌的工作 -
您需要生成一个排列并从排列中选择。如果您可以将其全部保留在内存中,请随机播放
-
生成数组:int set[9]={1,2,3,4,5,6,7,8,9} 并在循环中 for(i=0;i 这是 O(N) 我认为是可以接受的