题目:
随机产生10个1-100的整数,存入到一个一维数组并输出,找出该数组中的最大数及所在元素的索引。
测试结果如下:
思路:
- Random生成随机数
- 一维数组接
- for循环找最大
难点
难点一、随机生成整数
1.Random用法 参考:Java中Random的规范使用
2.Random如何生成一定范围内的数
一、生成闭区间随机整数
一、生成闭区间随机整数
一、生成闭区间随机整数
公式:random.nextInt(最大值 - 最小值 + 1) + 最小值
应用场景 | 代码示例 | 数学表达式 |
---|---|---|
生成1-100的整数 | nextInt(100) + 1 | [ 1 , 100 ] [1,100] [1,100] |
生成5-20的整数 | nextInt(16) + 5 | 5 ≤ x ≤ 20 5 \leq x \leq 20 5≤x≤20 |
生成-10到10的整数 | nextInt(21) - 10 | − 10 ≤ x ≤ 10 -10 \leq x \leq 10 −10≤x≤10 |
二、生成开区间随机整数
二、生成开区间随机整数
二、生成开区间随机整数
公式:random.nextInt(最大值 - 最小值 - 1) + 最小值 + 1
目标范围 | 代码示例 | 数学表达式 |
---|---|---|
生成1-100(不含100) | nextInt(99) + 1 | 1 ≤ x < 100 1 \leq x < 100 1≤x<100 |
生成5-20(不含20) | nextInt(15) + 5 | 5 ≤ x < 20 5 \leq x < 20 5≤x<20 |
三、浮点数范围生成
三、浮点数范围生成
三、浮点数范围生成(使用nextDouble()
)
公式:最小值 + (最大值 - 最小值) * random.nextDouble()
目标范围 | 代码示例 | 数学表达式 |
---|---|---|
生成0.0-1.0 | random.nextDouble() | 0.0 ≤ x < 1.0 0.0 \leq x < 1.0 0.0≤x<1.0 |
生成2.5-5.5 | 2.5 + 3.0 * random.nextDouble() | 2.5 ≤ x < 5.5 2.5 \leq x < 5.5 2.5≤x<5.5 |
代码验证 代码验证 代码验证
Random random = new Random();
// 生成[50,100]的整数
int num1 = random.nextInt(51) + 50;
// 生成(0,100)的整数(排除0和100)
int num2 = random.nextInt(99) + 1;
// 生成[-π,π]的浮点数
double num3 = -Math.PI + 2*Math.PI*random.nextDouble();
3.怎么一下用Random生成10个随机数
通过循环用一个元素个数为10的一维数组接即可
总结
完整代码:
import java.util.Random;
public class _1
{
public static void main(String[] args)
{
int i_max = 0;
Random r = new Random();
int arr[]= new int[10]; // 创建长度为10的int数组
for (int i = 0; i < 10; i++)
{
arr[i] =r.nextInt(100)+1;
}
for (int i = 0; i < 10; i++)
{
System.out.print(arr[i]+" ");
}
int max =0;
for (int i = 0; i < 10; i++)
{
if (arr[i]>max)
{
max = arr[i];
i_max = i;
}
}
System.out.println("最大值为:"+max);
System.out.println("索引为:"+(i_max+1));
}
}
运行效果:
补充
1.如何创建长度为10 的一维数组
int[] numbers = new int[10]; // 创建长度为10的int数组