用Java产生100个1

网友投稿 214 2023-06-09


用Java产生100个1

核心代码

import java.util.Arrays;

/**

* 用Java产生100个1-150的数字

*/

public class RandomTest {

public static void main(String[] args) {

int[] resultArr = produceNum(1, 150, 100);

for (Integer num : resultArr) {

System.out.println(num);

}

System.out.println("+++++++++++++++++===================+++++++++++++");

// 对结果数组排序后再输出

Arrays.sort(resultArr);

for (Integer num : resultArr) {

System.out.println(num);

}

}

/**

* 产生随机数字

* @param minNum 最小数字

* @param maxNum 最大数字

* @param numCount 产生的数字个数

* @return 结果数组

*/

public static int[] produceNum(int minNum, int maxNum, int numCount) {

// 入参校验

// 如果随机数的个数大于产生随机数的范围;或最大数小于最小数

// 直接返回null,说明入参不符合要求

if (numCount > (maxNum - minNum + 1) || maxNum < minNum) {

return null;

}

// 存放结果的数组

int[] resultArr = new int[numCount];

// count 记录已产生的随机数的个数

int count = 0;

while(count < numCount) {

// 产生随机数

int num = (int) (Math.random() * (maxNum - minNum)) + minNum;

// flag 定义本次产生的随机数是否已在数组中

boolean flag = true;

// 遍历数组中已产生的随机数

for (int i=0; i

// 同本次产生的随机数最比较

if (num == resultArr[i]) {

// 如果已存在相同的值,则跳出for循环,继续外层的while循环,产生下一个随机数

flag = false;

break;

}

}

// 如果本次产生的随机数在数组中不存在,则将该随机数存放在数组中

if (flag) {

resultArr[count] = num;

// 数组中已产生的随机数个数加1

count++;

}

}

return resultArr;

}

}

代码解读

1 int num = (int) (Math.random() * (maxNum - minNum)) + minNum;

Math.random() 产生的是0~1 之间的double类型的随机数

Math.random() * 10 便会得到 0 ~ 10 之间的随机数,转int后便是0 ~ 9;如果给 Math.random() * 10 + 1,便是1 ~ 11 之间的随机数,转int便是1 ~ 10。

这里的1 相当于程序中的最小值,11则为最大值。

这样便得到了产生随机数的 (int) (Math.random() * (maxNum - minNum)) + minNum

2 for (int i=0; i

由于每次产生的num都是随机的,所以无法保证重复的问题,所以CmYoNf只有通过去同已经产生的存在数组中的数字去比较,相同,则重新产生,不同,则添加进数组。

// 同本次产生的随机数最比较

if (num == resultArr[i]) {

// 如果已存在相同的值,则跳出for循环,继续外层的while循环,产生下一个随机数

flag = false;

break;

}

}

// 如果本次产生的随机数在数组中不存在,则将该随机数存放在数组中

if (flag) {

resultArr[count] = num;

// 数组中已产生的随机数个数加1

count++;

}

}

return resultArr;

}

}

代码解读

1 int num = (int) (Math.random() * (maxNum - minNum)) + minNum;

Math.random() 产生的是0~1 之间的double类型的随机数

Math.random() * 10 便会得到 0 ~ 10 之间的随机数,转int后便是0 ~ 9;如果给 Math.random() * 10 + 1,便是1 ~ 11 之间的随机数,转int便是1 ~ 10。

这里的1 相当于程序中的最小值,11则为最大值。

这样便得到了产生随机数的 (int) (Math.random() * (maxNum - minNum)) + minNum

2 for (int i=0; i

由于每次产生的num都是随机的,所以无法保证重复的问题,所以CmYoNf只有通过去同已经产生的存在数组中的数字去比较,相同,则重新产生,不同,则添加进数组。

由于每次产生的num都是随机的,所以无法保证重复的问题,所以CmYoNf只有通过去同已经产生的存在数组中的数字去比较,相同,则重新产生,不同,则添加进数组。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序 UI与容器组件总结
下一篇:Java找出1000以内的所有完数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~