随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:
第一种:new Random()
第二种:Math.random()
第三种:currentTimeMillis()
有三个小方法方法1
(数据类型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
从1到10的int型随数
方法2
获得随机数
for (int i=0i<30i++)
{System.out.println((int)(1+Math.random()*10))}
(int)(1+Math.random()*10)
通过java.Math包的random方法得到1-10的int随机数for (int i=0i<30i++)
{System.out.println((int)(1+Math.random()*10))}
(int)(1+Math.random()*10)
通过java.Math包的random方法得到1-10的int随机数
公式是:最小值---最大值(整数)的随机数(类型)最小值+Math.random()*最大值
方法3
Random ra =new Random()
for (int i=0i<30i++)
{System.out.println(ra.nextInt(10)+1)}
通过java.util包中的Random类的nextInt方法来得到1-10的int随机数
生成0到1之间的任意随机小数:
生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1
由于你没有指定这10个整数的生成范围,所以我这里假定是0~99之间的整数,这样用户输入时有10%的几率命中。
整体代码为:
public class Main {
public static void main(String[] args) {
//声明长度为10的随机数数组
int[] randoms = new int[10]
Random random = new Random()
for (int i = 0i <10i++) {
//获取0~99之间的一个随机整数,可通过调整nextInt的参数来修改随机数范围
int num = random.nextInt(100)
//如果新生成的数字已经存在于随机数数组中,则重新生成
if (checkDistinct(randoms, num)) {
i--
continue
}
randoms[i] = num
}
//增序排序,好看
Arrays.sort(randoms)
System.out.println("请输入一个整数:")
Scanner scanner = new Scanner(System.in)
//严谨一点这里其实可以对输入的in进行校验,检验其是不是整数,校验方法很多搜一下就有我这就不校验了
int in = scanner.nextInt()
System.out.println("生成的随机数数组为:")
System.out.println(Arrays.toString(randoms))
if (checkDistinct(randoms, in)) {
System.out.println("输入的数字[" + in + "]在其中")
} else {
System.out.println("输入的数字[" + in + "]不在其中")
}
}
//检查新生成的数字是否存在于随机数数组中,若存在,返回true
private static boolean checkDistinct(int[] randoms, int num) {
for (int i = 0i <randoms.lengthi++) {
if (randoms[i] == num) {
return true
}
}
return false
}
}
运行结果:
输入的数字存在时:
输入的数字不存在时: