java随机排列数组 :
/*
* 随机排列数组,使用优先级方式,每个数组元素A[i] 对应一个优先级P[i],
* 然后依据优先级对数组进行排序
*/
private static void permuteBySort(int[] data)
{
int len=data.length;
int len3=len*len*len;
int P[]=getRandom(1,len3,len);
//冒泡排序
for(int i=len-1; i>0; i--)
{
for(int j=0; j<i ; j++)
{
if(P[j]>P[j+1])
{
int temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
temp=P[j];
P[j]=P[j+1];
P[j+1]=temp;
}
}
}
}
/*
* 元素A[i]是从 元素A[i]到A[n]中随机选取的
*/
private static void randomizeInPlace(int[] data)
{
Date dt=new Date();
Random random=new Random(dt.getSeconds());
int len=data.length;
for(int i=0; i<len; i++)
{
int pos=(int)(random.nextDouble()*(len-i+1)+i)-1;
int temp=data[i];
data[i]=data[pos];
data[pos]=temp;
}
}
/*
* 获得在a到b之间的n个随机数
*/
private static int[] getRandom(int a,int b,int n)
{
if(a>b)
{
int temp=a;
a=b;
b=temp;
}
Date dt=new Date();
Random random=new Random(dt.getSeconds());
int res[]=new int[n];
for(int i=0; i<n; i++)
{
res[i]=(int)(random.nextDouble()*(Math.abs(b-a)+1))+a;
}
return res;
}
===================================
使用
Collections.shuffle(list);
分享到:
相关推荐
首先,我们要理解的是,打乱数组顺序的核心在于交换数组中的元素。这里使用了一个名为`RandomSort`的类,它包含了一个整型数组`positions`,以及一系列方法来处理数组的随机排序。 1. **初始化数组**: 类的构造...
Java的Collections类提供了一个名为shuffle()的方法,可以用来随机打乱列表中的元素顺序。对于数组,我们可以先将其转换为ArrayList,然后打乱,再遍历输出。代码如下: ```java Integer[] array = {...}; // ...
洗牌程序的灵感来源于实际生活中的洗牌过程,其核心思想是通过随机选择数组中的元素并与其后面的元素交换位置,重复此过程直到数组完全打乱。在Java中,`java.util.Collections` 类提供了一个名为 `shuffle()` 的...
在这个问题中,我们需要实现一个算法来随机打乱一个给定的数组,以便在每次运行时都能得到不同的排列顺序,但保持原数组元素的完整。 【描述】在LeetCode的第384题中,任务是模拟著名的“Fisher-Yates(也称为Knuth...
本次练习题的主要内容涉及Java数组的基本操作,包括创建和初始化数组、数组遍历、数组元素的随机打乱以及数组的打印输出。下面将对这些知识点进行详细介绍: 1. Java数组的创建与初始化 在Java中,数组是用于存储...
总结,Java中的`List`接口提供了丰富的功能,包括随机抽取元素和随机打乱顺序。这些操作在处理数据集时非常有用,例如在游戏开发、模拟和数据分析等场景。理解并熟练运用这些方法,可以帮助开发者编写更加灵活和高效...
4. **常用操作**:学习如何编写代码来显示数组内容、计算所有元素的总和、找出数组中的最小和最大元素,以及随机打乱数组元素的顺序。 5. **传递二维数组给方法**:学习如何将二维数组作为参数传递给方法,以便在...
BogoSort,又称为BozoSort或StoogeSort,是一种非常慢的排序算法,它的基本思想是不断地随机打乱数组,直到数组变得有序为止。这个名字来源于“bozo”,意为傻瓜,暗示了其低效性。BogoSort的平均和最坏情况时间...
更深入的Java编程知识和技巧,读者可以参考《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》等专题内容,这些都有助于加深对Java编程的理解和...
另一种实现方式是先创建一个包含所有可能数字的数组,然后使用类似于Fisher-Yates(Knuth)洗牌算法来打乱数组顺序,这样每次取数组的第一个元素就能得到一个随机且不重复的数字。 6. **ArrayList与LinkedList**:...
要实现数组的随机排序,可以利用Array对象的sort方法,该方法接受一个比较函数作为参数,用于确定数组中元素的顺序。在比较函数中,通过Math.random()函数返回一个介于0到1之间的随机数,并通过与0.5比较来决定元素...
2. **初始化游戏**:在游戏开始时,我们可以随机打乱数组中的数字,创建一个初始的混乱状态。 3. **用户交互**:设计用户界面,允许玩家选择并交换相邻的方格。在Java中,我们可以使用Swing或JavaFX库来创建图形...
有时候会需要将一个ArrayList或者数组中的数字打乱,方便后续使用,比如随机出题、答案选项打乱、连线题打乱、抽奖号码打乱等等,把我自己写的一段代码贴出来分享给大家。
在初始化一维数组时,我们先填充所有元素的4倍,然后通过随机交换元素值的方法来打乱数组顺序。这个过程可以通过从数组末尾开始,随机选择一个位置与前一个位置的元素交换值来实现,以此类推,直至数组首尾元素交换...
1. **Puzzle类**:该类将包含所有拼图相关的逻辑,如设置初始图片、随机打乱拼图碎片、检查拼图是否完成等。这涉及到Java的数组或集合数据结构来存储碎片,并使用随机数生成器打乱顺序。 2. **Tile类**:每个`Tile`...
首先,数组的所有元素都会被随机打乱,然后将排序后的数组元素逐个放回原列表中。 这个随机排序的过程是线程不安全的,因此如果你在多线程环境中使用`Collections.shuffle()`,需要自行进行同步控制。此外,如果你...
5. **游戏逻辑**:拼图游戏的逻辑包括初始化拼图、随机打乱、解决算法、时间计算和难度等级设置。开发者可能使用二维数组或其他数据结构来存储拼图状态,然后通过特定算法实现拼图的移动和检查是否完成。 6. **文件...
在Java编程语言中,洗牌、发牌以及随机地主的实现是常见的游戏逻辑操作,它们涉及到随机数生成、数组操作以及数据结构的运用。在这个话题中,我们将深入探讨如何在Java中有效地实现这些功能。 首先,让我们从“洗牌...
在实现记忆测试的核心机制时,Java的数组或集合数据结构可以用来存储拼图的状态。初始时,拼图块的位置是随机打乱的,当玩家点击一块拼图后,系统会记录已翻开的块,并比较它们是否匹配。这里可能需要用到栈数据结构...
游戏初始时,需要将原始图像分割成若干小块,这可以通过二维数组来存储每个小块的位置和图像数据。然后,通过随机算法打乱这些小块的顺序,形成游戏开始的状态。 在用户交互方面,学生需要实现鼠标点击事件监听,当...