java和js实现的洗牌小程序

  1. 洗牌算法简介

洗牌算法即可将一个包含n个元素的数组打乱,保证每个元素均匀地分布在原数组中。常用的洗牌算法有Fisher–Yates算法(也被称为Knuth-Shuffle算法),其核心思想是将数组从后往前遍历,对于未处理的元素,随机从已处理的元素中选出一个,然后与该元素交换。这样可以保证每个元素被随机地赋予新的位置。

  1. Java实现

Java官方提供了Collections.shuffle方法,可以直接用于List接口的洗牌操作。示例代码如下:

import java.util.*;

public class ShuffleDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        System.out.println("原数组:" + list);
        Collections.shuffle(list);
        System.out.println("洗牌后:" + list);
    }
}

输出结果:

原数组:[1, 2, 3, 4, 5]
洗牌后:[2, 1, 4, 3, 5]
  1. JS实现

在JS中,我们可以使用Math.random()生成0-1之间的随机数,然后通过交换数组元素来实现洗牌操作。示例代码如下:

function shuffle(arr) {
  for (let i = arr.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
  return arr;
}

const arr = [1, 2, 3, 4, 5];
console.log("原数组:" + arr);
console.log("洗牌后:" + shuffle(arr));

输出结果:

原数组:1,2,3,4,5
洗牌后:2,5,1,4,3

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java和js实现的洗牌小程序 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • java动态规划算法——硬币找零问题实例分析

    Java 动态规划算法——硬币找零问题实例分析 简介 硬币找零问题是一类非常经典的问题,主要是如何计算出需要多少硬币才能凑够给定的金额。动态规划是解决硬币找零问题的一种常用算法。本文将介绍动态规划算法的工作原理及其在硬币找零问题中的应用。 动态规划算法 动态规划算法(Dynamic Programming)是一种解决问题的思想,它将问题拆分成若干个子问题,并…

    Java 2023年5月26日
    00
  • Java Servlet和JSP教程

    下面就来详细讲解一下“Java Servlet和JSP教程”的完整攻略。 一、背景介绍 Java Servlet和JSP是Web应用程序开发中非常重要的两个技术,Servlet可以处理HTTP请求并返回HTTP响应,而JSP则可以将Java代码嵌入到HTML中,方便动态生成Web页面。本教程主要介绍Servlet和JSP的基本知识,包括Servlet API…

    Java 2023年5月23日
    00
  • 详解RabbitMQ中延迟队列结合业务场景的使用

    详解RabbitMQ中延迟队列结合业务场景的使用 本文将介绍如何使用RabbitMQ中的延迟队列来解决一些常见的业务场景,并提供示例代码帮助读者理解。 什么是RabbitMQ延迟队列 RabbitMQ延迟队列是指一种可以发送延迟消息的队列,它的原理是将消息发送到一个绑定了“延迟 exchange”和“延迟 queue”的队列中,消息在该队列中暂时屏蔽,直到消…

    Java 2023年5月26日
    00
  • Java常见踩坑记录之异常处理

    Java常见踩坑记录之异常处理 异常处理是Java中非常重要的一个概念。在程序运行的过程中,发生了意外的情况,Java程序将抛出异常并停止运行,这时就需要我们合理地进行异常处理。 异常的分类 Java中的异常分为两种类型:Checked Exceptions和Unchecked Exceptions。 Checked Exceptions需要在方法中声明并通…

    Java 2023年5月27日
    00
  • 深入了解Java设计模式之职责链模式

    深入了解Java设计模式之职责链模式 职责链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行发送,直到其中一个处理者处理该请求。职责链模式常用于请求的处理流程较为复杂,有多个处理器时的情况。 定义 职责链模式为请求创建了一个接受者对象的链,给予请求的类型,对请求的发送者和接收者进行解耦。职责链模式将请求的发送者和接收者分离开来,只要在链上得到处理,就…

    Java 2023年5月20日
    00
  • java定时任务的实现方法

    下面是针对”Java定时任务的实现方法”的详细攻略,主要介绍如何使用Java实现定时任务。 什么是定时任务? 定时任务是指在预定时期或时间,按照一定轨迹执行一些预定的操作或服务。 Java中实现定时任务的方法 1. Timer类 Java中提供了java.util.Timer类,它可以帮助我们实现简单的定时任务。 public class TimerTask…

    Java 2023年5月20日
    00
  • Jsp页面实现文件上传下载类代码第2/2页

    我会尽可能详细地讲解”Jsp页面实现文件上传下载类代码”的完整攻略。 首先,我们来讲一下文件上传的实现过程。 文件上传 HTML表单 要上传文件,我们首先需要在HTML表单中添加一个<input type=”file”>元素,例如: <form action="fileUpload.jsp" method="p…

    Java 2023年6月15日
    00
  • Vue+java实现时间段的搜索示例

    下面是 “Vue+java实现时间段的搜索示例” 的完整攻略: 1. 准备工作 首先,我们需要准备后端接口,即搜索 API。我们可以使用 Java 和 Spring Boot 搭建一个简单的后端程序,提供时间段的搜索服务。具体实现可以参考 Spring Boot 官方文档。 接下来,我们需要准备前端框架。我们可以使用 Vue.js 来搭建一个简单的用户界面。…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部