java 算法--洗牌算法
方法(一)
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 算法--洗牌算法相关推荐
- 洗牌程序c语言原理,C语言经典算法 - 洗牌算法
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1-N)打乱重新排列,只 ...
- 【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)
文章目录 题目描述 思路 && 代码 题目描述 中等题,很赞!第一次碰到涉及洗牌算法的题 有点涉及概率,主要是要实现公平的随机 思路 && 代码 采用了 Knuth 洗 ...
- shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)
Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...
- 面试官:会玩牌吧?给我讲讲洗牌算法和它的应用场景吧!
有一次参加面试,面试官问我:"会玩牌吧?" 内心:"咋滴,这是要玩德州扑克(或者炸金花),赢了他就能通过面试么?" 结果-- 没想到面试官的下一句话:" ...
- python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...
- 随机洗牌算法+matlab,洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...
- C# 之 随机数应用 -- 洗牌算法
C# 之 随机数应用 -- 洗牌算法 洗牌算法 洗牌算法 这个逻辑很简单却实现了真随机:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置. 换句话说,每一个位置都能等概率 ...
- Unity | 三种洗牌算法
拓展资料:C#Shuffle算法(洗牌算法.抽样算法) - 简书 代码: using System.Collections.Generic; using UnityEngine;/** * Write ...
- 洗牌算法(Knuth算法)
算法 洗牌算法(Knuth算法) @author:Jingdai @date:2020.10.02 简介 给你一个数组(牌),要求打乱数组顺序,使每个元素出现在任何地方的概率一样. 思路 利用经典洗牌 ...
最新文章
- FPGA之道(55)状态机的HDL模板
- TensorFlow数据统计
- 云速搭部署挂载CPFS的E-HPC
- MySQL高级 - 查询缓存 - 失效场景
- isOnSyncQueue
- 通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
- LeetCode 24. 两两交换链表中的节点(递归+循环)
- 虚拟化平台cloudstack(7)——新版本的调试
- 类和对象编程(二):类访问修饰符
- 在 CentOS7 安装 ELK
- 计算机多媒体技术的内容有哪些方面,多媒体技术是什么_多媒体技术知识点总结...
- opencv 的norm_OpenCV:norm-范数求解函数
- 3串锂电池充电保护板设计
- Linux欧姆单位怎么打,电阻常识-younger0-ChinaUnix博客
- APP开发流程都有哪些?
- 手把手教你在Unity中实现小地图
- 操作系统复习题最全(复习看它就够了!!!!!
- 名帖30 东汉 隶书《西岳华山庙碑》
- 成都 java_成都Java开发程序员薪资多少?
- 构建告警管理可观察性智能平台
热门文章
- silk 编解码_silk音频编解码C++类
- java 小数精确_Java中小数精确计算
- ubuntu允许root远程登陆sftp
- kafka高可用(集群)
- 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
- linux更改桌面壁纸的脚本,ubuntu 桌面 壁纸 自动切换 方法 图解 linux
- oracle查找异常中断的sql,oracle查询sql报错SqlExceptionHelper:131 ORA-00933: SQL command not properly ended...
- android 代码设置居右_android如何让textview文字居右
- 微信为什么打不开html,微信打不开怎么回事 微信打不开解决方法
- Python面对对象编程——公有与私有