把一个数组的顺序打乱,很常用的算法,比如洗牌。。
代码如下:
import java.util.Random;
public class RandomSort {
private Random random = new Random();
//数组大小
private static final int SIZE = 10;
//要重排序的数组
private int[] positions = new int[SIZE];
public RandomSort() {
for(int index=0; index<SIZE; index++) {
//初始化数组,以下标为元素值
positions[index] = index;
}
//顺序打印出数组的值
dwn();
}
//重排序
public void changePosition() {
for(int index=SIZE-1; index>=0; index--) {
//从0到index处之间随机取一个值,跟index处的元素交换
exchange(random.nextInt(index+1), index);
}
dwn();
}
//交换位置
private void exchange(int p1, int p2) {
int temp = positions[p1];
positions[p1] = positions[p2];
positions[p2] = temp;
}
//打印数组的值
private void dwn() {
for(int index=0; index<SIZE; index++) {
System.out.print(positions[index]+" ");
}
System.out.println();
}
public static void main(String[] args) {
RandomSort rs = new RandomSort();
rs.changePosition();
rs.changePosition();
rs.changePosition();
}
}
不过由于随机数产生器产生的随机数不太随机,所以排序的结果页有很多相似的地方。换一个好的随机数产生器,会达到更好的效果,就能用于洗牌了,呵呵。
分享到:
相关推荐
JavaScript应用实例-随机打乱数组顺序.js
AutoJs源码-随机打乱数组顺序。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己...
易语言文本数组随机打乱排序源码。@资源源码站。
如何随机打乱数组顺序,也即洗牌。 有一个比较广为传播的简单随机算法: function RandomSort (a,b){ return (0.5 - Math.random()); } 实际证明上面这个并不完全随机。 随便一搜网上太多这种东西了,看一下...
通过对数组的随机乱序,以实现让数组随机的输出内容,如游戏扑克牌的洗牌功能。
主要介绍了JAVA随机打乱数组顺序的方法,包含了随机数的应用及数组的排序等操作,是Java操作数组的典型应用,需要的朋友可以参考下
本文实例讲述了C#实现将数组内元素打乱顺序的方法。分享给大家供大家参考。具体如下: 1.泛型类代码 //泛型类 class Item { T[] item; //构造函数 public Item(T[] obj) { item = new T[obj.Length]; for ...
通过移位和逻辑运算,快速生成给定区间的不重复随机数。 形象地说就是随机打乱值的顺序。 发现网上其它的方法都太慢了,又刚好想到这个方法, 就传上来了。
一个简单的小例子,由于自己需要用到这种功能打乱超级列表框的随机顺序。在列表框数据全部加载完毕后需要打乱之前的循规蹈矩的顺序 随机打乱下。而且又要保证每个表项的不同列数据要保证不被改变,尝试了下写出来!。有...
本文实例总结了JS随机打乱数组的方法。分享给大家供大家参考,具体如下: JS中,要打乱数组有很多方法,网上流传一个国外人写的方法,我认为是最精简的了: function randomsort(a, b) { return Math.random()>.5 ...
js代码-算法:二维数组随机打乱(扫雷)
使用javascript过程中,偶尔会用到数值,而且是打乱后的数值,本文将介绍一种高效打乱数组的方法,需要的朋友可以参考下
js代码-打乱数组,随机产生一组重新排列的数组
一个简单的小例子,由于自己需要用到这种功能打乱超级列表框的随机顺序在列表框数据全部加载完毕后需要打乱之前的循规蹈矩的顺序 随机打乱下而且又要保证每个表项的不同列数据要保证不被改变,尝试了下写出来!...
结尾% % 输入参数: % X - 要洗牌的向量或矩阵(数组) % DIM - 随机播放的维度(整数) % 输出参数: % Y - 元素被打乱的向量或矩阵(数组) % I - 带有洗牌顺序的索引矩阵(数组) % % 例子: % X = [10 25 30 ...
在我们使用一些数据的过程中,我们想要打乱数组内数据的顺序但不改变数据本身,可以通过改变索引值来实现,也就是将索引值重新随机排列,然后生成新的数组。功能主要由python中random模块的sample()函数实现。 ...
一个简单的小例子,由于自己需要用到这种功能打乱超级列表框的随机顺序 在列表框数据全部加载完毕后需要打乱之前的循规蹈矩的顺序 随机打乱下 而且又要保证每个表项的不同列数据要保证不被改变,尝试了下写出来! 有的...
从上面这个数组入手,我们要做的就是打乱数组内元素的顺序: 代码实现 维基百科上的 Fisher–Yates shuffle 词条对洗牌算法做了详细介绍,下面演示的算法也是基于其中的理论编写的: Array.prototype.shuffle = ...