JAVA 根据当前系统日期 对0-50进行排序 有什么好思路请指教??? 也就是说 有一个函数 给该函数中放入一个INT的数字例如 50接着在这里方法内获取当前系统日期 然后来对0-50进行一个排列 且是唯一的 不能与明天或者前天的相同 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把这个系统时间转化为长整形,作为种子,去依次生成0-50的随机整数,每生成一个数就放入一个List,当然,生成的时候要进行判断,判断该数是否已经出现在List中,如果是就不再插入,不是就插入 java的随机种子本来就是系统时间 当然你要是想一天之内的排列都相同那程序可以再改import java.util.Arrays;public class Test { public static void main(String[] args) { System.out.println(Arrays.toString((mySort(30)))); } public static int[] mySort(int num){ int[] before=new int[num+1]; int[] after=new int[num+1]; for(int i=0;i<=num;i++){ before[i]=i; } for(int i=0,j=0;i<=num;i++,j++){ int index=(int)(Math.random()*num); if(before[index]!=-1){ after[j]=before[index]; before[index]=-1; }else{ while(before[index]==-1){ index++; if(index==num+1) index=0; } after[j]=before[index]; before[index]=-1; } //System.out.println(Arrays.toString(before)); } return after; }} 这是同一天排列相同的import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.Random;public class Test { public static void main(String[] args) { System.out.println(Arrays.toString((mySort(30)))); } public static int[] mySort(int num){ Date d=new Date(); SimpleDateFormat f=new SimpleDateFormat("yyyyddMM"); long n=Integer.parseInt(f.format(d)); Random ran=new Random(n); System.out.println(n); int[] before=new int[num+1]; int[] after=new int[num+1]; for(int i=0;i<=num;i++){ before[i]=i; } for(int i=0,j=0;i<=num;i++,j++){ int index=ran.nextInt(num); if(before[index]!=-1){ after[j]=before[index]; before[index]=-1; }else{ while(before[index]==-1){ index++; if(index==num+1) index=0; } after[j]=before[index]; before[index]=-1; } } return after; }}今天的排列:[18, 19, 29, 17, 20, 6, 23, 21, 3, 16, 9, 13, 14, 4, 22, 10, 26, 24, 15, 11, 28, 12, 25, 5, 7, 27, 30, 0, 1, 2, 8]明天的排列:[23, 9, 11, 2, 7, 19, 21, 3, 18, 25, 10, 4, 20, 12, 8, 15, 16, 13, 17, 0, 5, 22, 6, 14, 24, 26, 27, 28, 29, 30, 1] 请教一下knightzhuwei 你的那个同一天内生成不通的数字 是什么公式来的?能解释一下吗?谢谢了 我是否能知道下一次的排列是什么?太感谢你了 如果可以的话 那么就搞定了 利用随机种子初始化random 只要作为种子的long型变量相同排列的结果就是相同的 random是java的一个标准类 我不过是使用了它而已 那不是公式,因为Random类提供的种子保证只要种子不同,排列就会不同 嗯。。所以还是不行。 因为我是想知道下一次的结果的。 唉。刚激动了一下 结果看见了RANDOM。55555555555555555!!! 预知明天的排列很简单 只要把这句改成Random ran=new Random(20091608);就行了预知下个时刻就不好说了 我的种子的组成方式是年日月 虽然好像没什么必要 传20091708就是后天的排列公式应该是有的 只是我不知道 可以考虑看下random的源码 要知道明天么你运行下就行了 为啥不能运行里 有趣的问题,求教 Thread.sleep()在监听器里的怪事 这是一个拿分的问题,别错过~~ JCreator 运行 java程序 窗口自动关闭 java 编译选项如何更改,例如增加一些告警提示 编译出现的问题,请指点~~!!!! 另一端的socket关闭后,这端怎么知道并处理? MySQL数据库中是中文,但linux下经过JSP读出显示后成乱码. 请问如何解决 Focus 的移动问题? JAVA和NOTEPADE++的难题 关于键盘输入Tab后,如何控制焦点,这个问题我觉得有点难度
import java.util.Arrays;public class Test {
public static void main(String[] args) {
System.out.println(Arrays.toString((mySort(30))));
}
public static int[] mySort(int num){
int[] before=new int[num+1];
int[] after=new int[num+1];
for(int i=0;i<=num;i++){
before[i]=i;
}
for(int i=0,j=0;i<=num;i++,j++){
int index=(int)(Math.random()*num);
if(before[index]!=-1){
after[j]=before[index];
before[index]=-1;
}else{
while(before[index]==-1){
index++;
if(index==num+1)
index=0;
}
after[j]=before[index];
before[index]=-1;
}
//System.out.println(Arrays.toString(before));
}
return after;
}
}
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Random;public class Test {
public static void main(String[] args) {
System.out.println(Arrays.toString((mySort(30))));
}
public static int[] mySort(int num){
Date d=new Date();
SimpleDateFormat f=new SimpleDateFormat("yyyyddMM");
long n=Integer.parseInt(f.format(d));
Random ran=new Random(n);
System.out.println(n);
int[] before=new int[num+1];
int[] after=new int[num+1];
for(int i=0;i<=num;i++){
before[i]=i;
}
for(int i=0,j=0;i<=num;i++,j++){
int index=ran.nextInt(num);
if(before[index]!=-1){
after[j]=before[index];
before[index]=-1;
}else{
while(before[index]==-1){
index++;
if(index==num+1)
index=0;
}
after[j]=before[index];
before[index]=-1;
}
}
return after;
}
}今天的排列:
[18, 19, 29, 17, 20, 6, 23, 21, 3, 16, 9, 13, 14, 4, 22, 10, 26, 24, 15, 11, 28, 12, 25, 5, 7, 27, 30, 0, 1, 2, 8]
明天的排列:
[23, 9, 11, 2, 7, 19, 21, 3, 18, 25, 10, 4, 20, 12, 8, 15, 16, 13, 17, 0, 5, 22, 6, 14, 24, 26, 27, 28, 29, 30, 1]
只要把这句改成Random ran=new Random(20091608);就行了
预知下个时刻就不好说了
公式应该是有的 只是我不知道 可以考虑看下random的源码
要知道明天么你运行下就行了