哪位大虾有在java中生成随机9位不能重复的数的算法
解决方案 »
- MyEclipse中JAR包引入问题
- java中进制转换问题
- jsp代码规范问题
- 日期转换问题(string转换成date)
- (JSP-ssh)js里的 array数组传值到 jsp action里?
- excel调用java类
- 有哪个大师可以加我QQ,我想问个关于建数据库的问题。我不会上传图片……
- (●●●●,高分100)在jsp或servlet页面的form中内容可以直接发到一个email信箱里吗?在apache环境下php中很容易用一个函数就可以实现
- 问一下,用ASP做的聊天室是怎样知道聊天室的某一个用户离开或者关闭窗口,即怎样检测已进入聊天室的用户已离开聊天室?如果在页面上加上
- 如何在JSP中建立与ACCESS数据库的连接关系?
- mysql怎么查询出重复的数据
- jsp图片显示问题
import java.util.Random;
import java.util.Set;public class Test {
public static void main(String[] args) {
Random rand = new Random(System.nanoTime());
Set<Integer> set = new HashSet<Integer>();
while (set.size() < 9) {
set.add(rand.nextInt(100));
}
System.out.println(set);
}
}
static long getRandomNumber9(){
Random random = new Random(System.currentTimeMillis());
Random random1 = null;//new Random(System.currentTimeMillis());
int i3 = 0;
long l9 = 0;//random.nextLong() * random.nextLong();
for(i3 = random.nextInt()/123 * random.nextInt()/345;
i3 < 7 || i3 >= 183;
i3 = random.nextInt()/123 * random.nextInt()/345);
try {
Thread.sleep(i3);
} catch (InterruptedException e) {
}
random1 = new Random(System.nanoTime());
for(l9 = random1.nextInt() * random1.nextInt();
l9 < 100000000 || l9 >= 999999999;
l9 = random1.nextInt() * random1.nextInt());
return l9;
}
正解,利用set不能添加相同元素的原理
for(int i=0;i<iArray.length;i++){
iArray[i]=(int)(Math.random()*10+1);//从1~10里面随即出5个不同的数字,
for(int j=0;j<i;j++){
if(iArray[i]==iArray[j]){
i--;
break;
}
}
}
比如:Date mydate=new Date();
int i=mydate*Math.random();
再除以一个10000或别的取整,这样重复的几率就很小了。最好再遍历下是否重复
for(int i=0; i<data.length; i++){
data[i] = i;
}int p, p1;p = 8
p1 = 8之间的随机数;
交换 data[p] 和 data[p1];p = 7;
p1 = 0~7之间的随机数
交换 data[p] 和 data[p1];p = 6;
p1 = 0~6 之间的随机数
交换 data[p] 和 data[p1]......
p = 1
p1 = 0~1 之间的随机数
交换 data[p] 和 data[p1];
import java.util.ArrayList;
import java.util.List;public class NumberGenerator {
private static List<Integer> numbers = new ArrayList<Integer>();
static {
for(int i=100000000; i <= 999999999; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
}
public static int getNumber() {
if(numbers.size() > 0) {
return numbers.get(numbers.size());
}
return -1;
}
public static void main(String[] args) {
System.out.println(getNumber());
}
}
= = ..我写的你试试把
public static void main(String args[]) {
int [] number = new int[9];
Random random = new Random();
for(int i = 0;i<number.length;i++){
number[i] = random.nextInt(9);
}
for (int i = 0; i < number.length; i++) {
for (int j = i+1; j < number.length; j++) {
if(number[i]==number[j]){
number[j] = random.nextInt(9);
i=-1;
break;
}
}
}
for (int i = 0; i < number.length; i++) {
System.out.println(number[i]);
}
}
写错了点:应该是remove
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;public class NumberGenerator {
private static List<Integer> numbers = new ArrayList<Integer>();
static {
for(int i=100000000; i <= 999999999; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
}
public static int getNumber() {
if(numbers.size() > 0) {
return numbers.remove(numbers.size());
}
return -1;
}
public static void main(String[] args) {
System.out.println(getNumber());
}
}
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;public class NumberRandom {
public static void main(String[] args) {
System.out.println(getRandomNumber());
}public static String getRandomNumber(){
Random random=new Random(System.currentTimeMillis());
Set<Integer> set=new HashSet<Integer>();
List<Integer> list=new ArrayList<Integer>();
while(set.size()<9){
int index=set.size();
int num=1+random.nextInt(9);
set.add(num);
if(index!=set.size()){
list.add(num);
}
}
StringBuilder str=new StringBuilder();
for (Integer integer : list) {
str.append(integer);
}
return str.toString();
}}
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;public class Test { public static String get9n(){
List list = new ArrayList();
for(int i=0;i<10;i++){
list.add(i);
}
Random rand = new Random();
StringBuffer sb = new StringBuffer();
for(int i=0;i<9;i++){
int index = rand.nextInt(10-i);
sb.append(list.get(index));
list.remove(index);
}
return sb.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<100;i++){
System.out.println(get9n());
} }}
我的思路是从0-9里面取9个数字,取出1个就把这个已经取出的移除,再从剩下的去取
List<Integer> l = new ArrayList<Integer>();
for (int i = 1; i < 10;l.add(new Integer(i++)));
List<Integer> ll = new ArrayList<Integer>();
while (l.size() > 0){
ll.add(l.remove(new Random().nextInt(l.size())));
}
for (int i = 0; i < ll.size();System.out.print(ll.get(i++)));
}
public class Testrandm {
public static void main(String args[]) {
int [] number = new int[9];
Random random = new Random();
for(int i = 0;i<number.length;i++){
number[i] = random.nextInt(1000000000);
}
for (int i = 0; i < number.length; i++) {
for (int j = i+1; j < number.length; j++) {
if(number[i]==number[j]){
number[j] = random.nextInt(1000000000);
i=-1;
break;
}
}
}
for (int i = 0; i < number.length; i++) {
System.out.println(number[i]);
}
}
}
for(int i=0;i<iArray.length;i++){
iArray[i]=(int)(Math.random()*10+1);
for(int j=0;j<i;j++){
if(iArray[i]==iArray[j]){
i--;
break;
}
}
}