本文目录一览:
1、在java中 如何随机排列几个数字 2、java 0-30随机输出5个随机数并从大到小排序,求大神解答。 3、1到 n 随机排序 java 4、如何对java集合中的元素进行随机排序? 5、java中对数组中的数据进行随机排序
在java中 如何随机排列几个数字
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
public class test1 {
public static void main(String arg[]){
String str="";
Random rd=new Random();
int num;
System.out.print("请输入几个数字,用逗号分隔开:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try{
str=br.readLine();
}catch(Exception e){
e.printStackTrace();
}
String[] array=str.split(",");
boolean[] bool=new boolean[array.length];
System.out.print("随机排列这些数字如下:");
for(int i=0;i<array.length;i++){
do{
num=rd.nextInt(array.length);
}while(bool[num]);
bool[num]=true;
System.out.print(array[num]+",");
}
}
}
java 0-30随机输出5个随机数并从大到小排序,求大神解答。
import java.util.Arrays;
import java.util.Random;
public class Test3 {
public static void main(String[] args) {
//定义长度为5的数组,存放产生的5个随机数
int[] n = new int[5];
//创建随机数对象
Random random = new Random();
//循环产生5个随机数
for (int i = 0; i < n.length; i++) {
//随机数的大小设定为0到30
n[i] = random.nextInt(30);
}
//对5个随机数排序,顺序为由小到大
Arrays.sort(n);
//创建临时数组,用来将5个随机数顺序倒置成由大到小
int []temp = new int[5];
//将数组n中数据由大到小存入临时数组
for (int i = 0; i < n.length; i++) {
temp[i] = n[n.length - i - 1];
}
//将n数组的引用指向临时数组,这样数组n的数据就和临时数组中的一样,即顺序变成了由大到小
n = temp;
//将临时数组引用清空
temp = null;
//由大到小顺序输出随机数
for (int i = 0; i < n.length; i++) {
System.out.print(n[i] + " ");
}
}
}
有不明白的请继续问
1到 n 随机排序 java
思路有两个:
- 利用
Random.nextInt(n)
得到处于0~n-1的随机数,加1后并按顺序放入数组。放入之前需要先判断数组中是否已经有了该数。 - 先初始化数组
a[n]
,存放1~n的整数,然后交换任意两个位置的数任意次数,这也能得到随机。交换次数定多少,这个我没法确定。 我把第一种方法代码贴出来:
static Random r = new Random();
@Test
public void test() {
printArray(getArray(20));
}
public void printArray(int[] a) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < a.length; i++) {
sb.append(a[i] + " , ");
}
System.out.print(sb.toString());
}
public int[] getArray(int n) {
int[] a = new int[n];
while ((n--) > 0) {
int temp = this.getNum(a.length);
while (true) {
if (check(temp, a)) {
temp = this.getNum(a.length);
} else {
a[n] = temp;
break;
}
}
}
return a;
}
public boolean check(int t, int[] a) {
boolean flag = false;
for (int i = 0; i < a.length; i++) {
if (t == a[i]) {
flag = true;
break;
}
}
return flag;
}
public int getNum(int n) {
return r.nextInt(n) + 1;
}
注释我就不加了,你应该看得懂。
如何对java集合中的元素进行随机排序?
List l = new ArrayList(input);
//将input数组放入arraylist,input为集合
List res = new ArrayList();
//用来存放随机产生元素的结果
Random r = new Random(); //随机数
int size = l.size();
for(int i = 0; i < size; i++){
res.add(l.remove(r.nextInt(l.size())));
}
//此时res中存放的就是随机排序的结果。
java中对数组中的数据进行随机排序
对数组进行随机排序分为两种形式,一种是完全随机排序,一种是不完全随机排序,区别是完全随机对数组中原先任意的数据不会出现在原来的位置上,那么,一般来说,完全随机排序的需求会相对较大,我在此先给出完全随机方式,如果你需要不完全随机排序,可以再说:
举个例子:有一批数据,共n个,依次为a1,a2,a3,…,an-1,an,需要对它们进行完全随机排序。排序方法类似于直接选择,从左至右,即从ai+1an中随机抽取一个数据与ai交换(1≤i≤n-1)。先排序第一个数据a1:从a2an中随机抽出一个数据与a1交换;再排序第二个数据a2:从a3an中随机抽取一个数据与a2交换;再排第三个数据a3:从a4an中随机抽取一个数据与a3交换;…;最后排第n-1个数据an-1:从an~an中随机抽取一个数据与an-1交换;第n个数据已不需要排序。这样,总共需要排n-1次。 从以上的算法分析中可以看出,每个待排序数据都会与其它数据交换位置,所以,每个数据都不会出现在原先的位置上,这是完全随机排序。