关于java random的一个有趣现象

本文揭示了在Idea 2021.2.1版本中,使用random生成数组时,最大值可能出现重复的现象,并详细展示了相关代码和实验过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

random生成数组的最大数会重复出现

在idea 的2021.2.1版本中用random赋值时,发现其数组的最大值会出现两次,在之后多次实验后,发现现象一直存在。

public class ArrayTest1 {
    public static void main(String[] args) {
        int[] arr = new int[20];
        for (int i = 0;i < arr.length;i++){
            arr [i] =(int)(Math.random() *(99 - 10 + 1) + 10);
        }
        //遍历
        for (int i = 0;i < arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        //求数组元素的最大值
        int maxValue = arr[0];
        for (int i = 1;i < arr.length;i++){
            if (maxValue < arr[i]){
                maxValue = arr[i];
            }
        }
         System.out.println(maxValue);
}
上述代码展示了一个简单的Processing程序,其中`ellipse()`函数用于绘制一个椭圆,并通过改变其坐标值使其按照一定的规则移动。让我们逐步分析这个代码的工作原理以及它的后续循环逻辑。 ### 程序解析 #### 初始化阶段 (`setup()` 函数) - `size(600, 500)` 设置了画布大小为宽600像素、高500像素。 - 变量 `x` 和 `y` 被初始化为画布中心点的坐标 `(width/2, height/2)`。 #### 绘制阶段 (`draw()` 函数) - 每次调用 `background(120)` 清除之前的画面内容并填充灰色背景(灰度值为120)。 - 使用 `ellipse(x, y, 100, 50)` 在当前的`(x,y)`位置绘制一个宽度为100像素高度为50像素的椭圆。 - 根据条件判断控制椭圆的方向变化: - 当`x < width - 50`时,即椭圆未触碰到右侧边界前向右平移; - 如果到达右边,则开始向下平移到达底部边缘(`height - 25`); - 到底边后开始左移回到左侧边缘附近; - 最终当顶部足够接近上界时再向上返回至初始区域; 这种模式会不断重复形成一种矩形轨迹运动效果。 ### 接下来的改进或添加功能 可以考虑增加更多元素或者调整现有行为让动画更丰富有趣: 1. **速度调节**:目前每次位移固定单位+/-1px,你可以引入随机数生成器使物体以不确定的速度前进。 ```java float speedX = random(-3, 3); // 随机水平方向速度 [-3,+3] float speedY = random(-2, 4); // 垂直方向也设定了不同范围内的随机数 x += speedX; // 应用于更新公式内代替原来的加减操作符部分 ``` 2. **颜色变换**:利用渐变色或其他视觉特效提升整体观赏体验。 ```java fill(random(255),random(255),random(255)); // 设定填充色彩随时变化 noStroke(); // 移除轮廓线 ``` 3. **障碍物检测及反应机制**:模拟碰撞反弹等物理现象增添互动感。 ```java if (x >= width || x <= 0){ speedX *= (-1); // 改变行进反向实现镜像反射效应 } if (y >= height || y <= 0){ speedY *=-1 ; // 对应垂直轴做出类似处理步骤即可完成上下限折返设定 } ``` 以上这些扩展都可以帮助构建更为复杂精美的图形界面应用项目哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值