方法(一)


public class Xipaisuanfa {

/**

* @param args

*/

// 数组大小

static Random random =new Random();

private int[] positions = { 1, 2, 3, 4, 5, 6, 9, 7, 8, 0 };

public Xipaisuanfa() {

}

// 重排序

public void changePosition() {

//使用for循环的目的是使得输出的数更加无序

for (int index = positions.length - 2; index >= 0; index--) {

// 从0到index处之间随机取一个值,跟index处的元素交换

exchange(random.nextInt(index+1), index);

}

System.out.println();

printPositions();

}

// 交换位置

private void exchange(int m, int n) {

int temp = positions[m];

positions[m] = positions[n];

positions[n] = temp;

}

// 依次打印数组的值

private void printPositions() {

for (int index = 0; index < positions.length; index++) {

System.out.print(positions[index] + " ");

}

System.out.println();

}

public static void main(String[] args) {

Xipaisuanfa rs = new Xipaisuanfa();

rs.changePosition();

rs.changePosition();

}

}

方法(二)

public class Xipaisuanfa {

/**

* @param args

*/

// 数组大小

private static int[] positions = { 1, 2, 3, 4, 5, 6, 9, 7, 8, 0 };

public static void main(String[] args) {

changePosition();

}

// 重排序

public static void changePosition() {

//使用for循环的目的是使得输出的数更加无序

for (int index = positions.length - 1; index >= 0; index--) {

// 从0到index处之间随机取一个值,跟index处的元素交换

int t = (int) (Math.random() * 9);

exchange(t + 1, t);

}

printPositions();

}

// 交换位置

private static void exchange(int m, int n) {

int temp = positions[m];

positions[m] = positions[n];

positions[n] = temp;

}

// 依次打印数组的值

private static void printPositions() {

for (int index = 0; index < positions.length; index++) {

System.out.print(positions[index] + " ");

}

System.out.println();

}

}

转载于:https://blog.51cto.com/chengxiangtong/1312639

java 算法--洗牌算法相关推荐

  1. 洗牌程序c语言原理,C语言经典算法 - 洗牌算法

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1-N)打乱重新排列,只 ...

  2. 【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)

    文章目录 题目描述 思路 && 代码 题目描述 中等题,很赞!第一次碰到涉及洗牌算法的题 有点涉及概率,主要是要实现公平的随机 思路 && 代码 采用了 Knuth 洗 ...

  3. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

  4. 面试官:会玩牌吧?给我讲讲洗牌算法和它的应用场景吧!

    有一次参加面试,面试官问我:"会玩牌吧?" 内心:"咋滴,这是要玩德州扑克(或者炸金花),赢了他就能通过面试么?" 结果-- 没想到面试官的下一句话:" ...

  5. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...

  6. 随机洗牌算法+matlab,洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...

  7. C# 之 随机数应用 -- 洗牌算法

    C# 之 随机数应用 -- 洗牌算法 洗牌算法 洗牌算法 这个逻辑很简单却实现了真随机:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置. 换句话说,每一个位置都能等概率 ...

  8. Unity | 三种洗牌算法

    拓展资料:C#Shuffle算法(洗牌算法.抽样算法) - 简书 代码: using System.Collections.Generic; using UnityEngine;/** * Write ...

  9. 洗牌算法(Knuth算法)

    算法 洗牌算法(Knuth算法) @author:Jingdai @date:2020.10.02 简介 给你一个数组(牌),要求打乱数组顺序,使每个元素出现在任何地方的概率一样. 思路 利用经典洗牌 ...

最新文章

  1. FPGA之道(55)状态机的HDL模板
  2. TensorFlow数据统计
  3. 云速搭部署挂载CPFS的E-HPC
  4. MySQL高级 - 查询缓存 - 失效场景
  5. isOnSyncQueue
  6. 通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
  7. LeetCode 24. 两两交换链表中的节点(递归+循环)
  8. 虚拟化平台cloudstack(7)——新版本的调试
  9. 类和对象编程(二):类访问修饰符
  10. 在 CentOS7 安装 ELK
  11. 计算机多媒体技术的内容有哪些方面,多媒体技术是什么_多媒体技术知识点总结...
  12. opencv 的norm_OpenCV:norm-范数求解函数
  13. 3串锂电池充电保护板设计
  14. Linux欧姆单位怎么打,电阻常识-younger0-ChinaUnix博客
  15. APP开发流程都有哪些?
  16. 手把手教你在Unity中实现小地图
  17. 操作系统复习题最全(复习看它就够了!!!!!
  18. 名帖30 东汉 隶书《西岳华山庙碑》
  19. 成都 java_成都Java开发程序员薪资多少?
  20. 构建告警管理可观察性智能平台

热门文章

  1. silk 编解码_silk音频编解码C++类
  2. java 小数精确_Java中小数精确计算
  3. ubuntu允许root远程登陆sftp
  4. kafka高可用(集群)
  5. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
  6. linux更改桌面壁纸的脚本,ubuntu 桌面 壁纸 自动切换 方法 图解 linux
  7. oracle查找异常中断的sql,oracle查询sql报错SqlExceptionHelper:131 ORA-00933: SQL command not properly ended...
  8. android 代码设置居右_android如何让textview文字居右
  9. 微信为什么打不开html,微信打不开怎么回事 微信打不开解决方法
  10. Python面对对象编程——公有与私有