当前位置: 首页 > news >正文

JAVA-数组乱序

实现步骤

  1. 假设有一组数组numbers
  2. 从数组中最后一个元素开始遍历
  3. 设置一个随机数作为循环中遍历到的元素之前的所有元素的下标,即可从该元素之前的所有元素中随机取出一个
  4. 每次将随机取出的元素与遍历到的元素交换,即可完成乱序

实例如下: 

import java.util.Arrays;
public class R18 {public static void main(String[] args) {int[] numbers= {12,34,23,56,17,27};for(int k=0;k<2;k++) {for(int i=numbers.length-1;i>0;i--) {int index=(int)(Math.random()*i);numbers[index]=numbers[i]^numbers[index];numbers[i]=numbers[i]^numbers[index];numbers[index]=numbers[i]^numbers[index];}}System.out.println(Arrays.toString(numbers));String[] playMusicList = { "1反方向的钟", "2七里香", "3半岛铁盒", "4双节棍", "5晴天", "6青花瓷", "7一路向北", "8稻香" };for(int i=playMusicList.length-1;i>0;i--) {int index=(int)(Math.random()*i);String temp=playMusicList[i];playMusicList[i]=playMusicList[index];playMusicList[index]=temp;}System.out.println(Arrays.toString(playMusicList));String[] role = { "安琪拉", "白起", "妲己", "狄仁杰", "典韦", "韩信", "老夫子", "刘禅", "鲁班七号", "墨子", "孙膑", "孙尚香", "孙悟空", "项羽","亚瑟", "周瑜", "庄周", "蔡文姬" };for(int i=role.length-1;i>0;i--) {int index2=(int)(Math.random()*i);String temp1=role[index2];role[index2]=role[i];role[i]=temp1;}System.out.println(Arrays.toString(role));int[] numbers2=new int[7];	}	
}

代码执行结果:

[23, 17, 56, 12, 27, 34]
[2七里香, 7一路向北, 8稻香, 3半岛铁盒, 4双节棍, 5晴天, 6青花瓷, 1反方向的钟]
[墨子, 妲己, 庄周, 安琪拉, 孙膑, 周瑜, 孙尚香, 亚瑟, 老夫子, 刘禅, 韩信, 典韦, 项羽, 狄仁杰, 白起, 孙悟空, 蔡文姬, 鲁班七号]

洗牌算法

洗牌算法也是用数组乱序的方法实现 ,实例如下:

import java.util.Arrays;
public class R21 {public static void main(String[] args) {String[] num= {"A","2","3","4","5","6","7","8","9","10","j","q","k"};String[] num1= {"♥","♠","♦","♣"};String[] num3=new String[num.length*num1.length];String[] num4=new String[num3.length/4];String[] num5=new String[num3.length/4];String[] num6=new String[num3.length/4];String[] num7=new String[num3.length/4];int counter=0;int index=0;for(int i=0;i<num.length;i++) {for(int k=0;k<num1.length;k++) {num3[index++]=num[i]+num1[k];}}//整10次牌,即实现10次乱序for(int n=0;n<10;n++);{for(int m=0;m<num3.length-1;m++) {int index1=(int)(Math.random()*m);String temp1=num3[index1];num3[index1]=num3[m];num3[m]=temp1;}}for(int j=0,z=1,x=2,v=3;j<num3.length;j=j+4,z=z+4,x=x+4,v=v+4) {num4[counter]=num3[j];num5[counter]=num3[z];num6[counter]=num3[x];num7[counter]=num3[v];counter++;			}System.out.println("玩家1:"+Arrays.toString(num4));System.out.println("玩家2:"+Arrays.toString(num5));System.out.println("玩家3:"+Arrays.toString(num6));System.out.println("玩家4:"+Arrays.toString(num7));}
}

执行结果如下: 

玩家1:[10♠, j♣, 4♠, 4♣, 4♥, 6♦, 10♦, j♦, 5♥, A♦, 3♦, k♥, 10♥]
玩家2:[7♣, q♣, 2♣, 6♠, 5♣, 6♥, 9♥, q♠, 9♦, 8♥, 8♦, 7♠, A♠]
玩家3:[A♣, 3♣, 10♣, q♦, j♥, 5♦, 9♣, 7♥, 2♠, 5♠, 8♣, 2♦, 9♠]
玩家4:[k♦, 3♥, q♥, 6♣, 3♠, 7♦, 8♠, j♠, 2♥, 4♦, A♥, k♠, k♣]

 

 

 

 

http://www.lryc.cn/news/299274.html

相关文章:

  • Stable Diffusion 模型下载:majicMIX reverie 麦橘梦幻
  • Java开发四则运算-使用递归和解释器模式
  • [NSSCTF]-Web:[SWPUCTF 2021 新生赛]easyrce解析
  • 5.深入理解箭头函数 - JS
  • 高效的工作学习方法
  • 【MySQL】-17 MySQL综合-3(MySQL创建数据库+MySQL查看数据库+MySQL修改数据库+MySQL删除数据库+MySQL选择数据库)
  • 【教学类-46-08】20240212立体鱼1.0
  • 【JVM篇】什么是jvm
  • Vulnhub靶场 DC-9
  • day2-理解 linux 云计算
  • Android 13.0 开启禁用系统接收短信功能
  • compile error ESP32cam.h no such file or directory
  • 使用 Chainlit, Langchain 及 Elasticsearch 轻松实现对 PDF 文件的查询
  • Gitee的使用教程(简单详细)
  • 生成树(习题)
  • ARMv8-AArch64 的异常处理模型详解之异常处理概述Handling exceptions
  • Ubuntu 18.04上安装cuDNN 8.9.6.50:一站式指南
  • Microsoft Word 超链接
  • SparkJDBC读写数据库实战
  • 代码随想录 -- 数组
  • 【国产MCU】-CH32V307-基本定时器(BCTM)
  • Node.js开发-fs模块
  • 探索Nginx:强大的开源Web服务器与反向代理
  • 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距
  • 【从Python基础到深度学习】1. Python PyCharm安装及激活
  • 片上网络NoC(3)——拓扑指标
  • 二叉树 ---- 所有结点数
  • 步步深入 k8s 使用 pv pvc sc 在 nfs 基础上共享存储
  • Stable Diffusion 模型下载:Disney Pixar Cartoon Type A(迪士尼皮克斯动画片A类)
  • Modelsim10.4安装