java由1~52产生一个随机数序列 不重复 不遗漏
发布网友
发布时间:2022-07-22 00:26
我来回答
共2个回答
热心网友
时间:2023-11-02 22:01
1 import java.util.Random;
2
3 public class Utility {
4 /**
5 * 用0~n生成m个数的随机序列
6 *
7 * @param limit
8 * - n-1
9 * @param need
10 * - m
11 * @return 生成的随机序列
12 */
13 public static int[] random_serial(int limit, int need) {
14 int[] temp = new int[limit];
15 int[] result = new int[need];
16 for (int i = 0; i < limit; i++)
17 temp[i] = i;
18 int w;
19 Random rand = new Random();
20 for (int i = 0; i < need; i++) {
21 w = rand.nextInt(limit - i) + i;
22 int t = temp[i];
23 temp[i] = temp[w];
24 temp[w] = t;
25 result[i] = temp[i];
26 }
27 return result;
28 }
这个是我找来的,我也顺便看了一下,学点东西。
热心网友
时间:2023-11-02 22:02
说那么复杂,你要是读过高中,你就该知道。这实际上是一个排列问题。
按照排列的思想,1-52中,抽一个出来放一边,剩下的再抽一个出来放一边。
一直延续下去。。每一次随机的上线都会减一,一直到最后的一步是从最后两个数中随机选一个出来,这两个数可能是任何1-52中的不同两个数。剩下的就是倒数第一个数
java由1~52产生一个随机数序列 不重复 不遗漏
1 import java.util.Random;2 3 public class Utility { 4 / 5 * 用0~n生成m个数的随机序列 6 7 * @param limit 8 * - n-1 9 * @param need 10 * - m 11 * @return 生成的随机序列 12 */ 13 public static int[] random_serial(int limit,...
九宫格使用C++穷举法实现,我目前的问题就是如何把1-9这个九个数字按照排...
循环给1-9这9个数字取一个1-9的随机数 建一个长度9的数组做标记,每一个格被分配了之后就标记下,循环的时候重复了就重新给这个数分配。直到所有的9个数都被分配。srand(time(0));int nFlag[9]; //记录9个格是否已经被分配 int nLocation[9]; //记录1-9个数的位置 memset(nFlag...
一个三位数加569,计算中不进位,这个三位数最大是多少?
一个三位数加569,计算中不进位,这个三位数最大是430。在基本算术中,进位是一种运算形式,加法运算中,每一数位上的数等于基数时向前一位数进一,它是标准算法的一部分,通过从最右边的数字开始合并然后传递到左边。例如,当在十进制下计算6和7的和等于13时,3被写入右边一列,而产生的进位1被写...
C++求助 为什么运行会出现内存引用错误?怎么处理呢?
// 产生随机数序列,以文本方式写入文件 void test1(void){ FILE *fw;int result_d;fw=fopen("satellite_neighbor.txt","w");if(fw==NULL) exit(0);randomize(); // 产生随机数种子 for(int i=0;i<1000;i++){ result_d=rand()%1000+1; // 随机数范围1~1000 printf("%d,",resul...