随机9位不重复的数

caimi1989 2011-05-06 11:08:27
哪位大虾有在java中生成随机9位不能重复的数的算法
...全文
517 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
Isnotsuitable 2011-05-12
  • 打赏
  • 举报
回复
int[]iArray=new int[9];
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;
}
}
}
tingyuing 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 zfl110 的回复:]
Java code
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Test {

public static String get9n(){
……
[/Quote]
+++
whswuhaisong 2011-05-11
  • 打赏
  • 举报
回复

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]);
}
}


}
xiaolong410 2011-05-11
  • 打赏
  • 举报
回复
+++[Quote=引用 4 楼 inhibitory 的回复:]
Java code
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test {
public static void main(String[] args) {
Random rand = new Random(System.nano……
[/Quote]
caimi1989 2011-05-11
  • 打赏
  • 举报
回复
谢谢各位大虾了啊!!
sunshine_99 2011-05-07
  • 打赏
  • 举报
回复
用当前时间的毫秒数
沧海阿木 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]

Java code
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test {
public static void main(String[] args) {
Random rand = new Random(System.nanoTime(……
[/Quote]
set是能去重,不过楼主的意思是不是9位数字中每一位数字都不一样
想喝咖啡的貓 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 caimi1989 的回复:]

引用 10 楼 caimi1989 的回复:
引用 3 楼 caimi1989 的回复:
引用 1 楼 abstruct 的回复:
为什么要随机数?
自己制定规则不行吗
你怎么判断它重复了!
四楼的是数组 我要的是9位数!
时间想过了 不行的! 接口那边必须是9位
[/Quote]
处理一下呗,小于10000000或大于999999999 pass掉。
龙四 2011-05-06
  • 打赏
  • 举报
回复

写错了点:应该是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());
}
}






[Quote=引用 16 楼 ticmy 的回复:]

Java code
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;



public class NumberGenerator {
private static List<Integer> numbers = new ArrayList<Integer>();
……
[/Quote]
pl3121605999 2011-05-06
  • 打赏
  • 举报
回复

= = ..我写的你试试把
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]);
}
}
龙四 2011-05-06
  • 打赏
  • 举报
回复
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.get(numbers.size());
}
return -1;
}

public static void main(String[] args) {
System.out.println(getNumber());
}
}
想喝咖啡的貓 2011-05-06
  • 打赏
  • 举报
回复
我记的有网友说过,基本不存在绝对随机数,都有机率存在重复,高端的随机系统需要专用的硬件。。。
小灰狼 2011-05-06
  • 打赏
  • 举报
回复
洗牌算法假代码

int[] data = new int[9];
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];
caimi1989 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 caimi1989 的回复:]
引用 3 楼 caimi1989 的回复:
引用 1 楼 abstruct 的回复:
为什么要随机数?
自己制定规则不行吗
你怎么判断它重复了!
四楼的是数组 我要的是9位数!
[/Quote] 时间想过了 不行的! 接口那边必须是9位
小灰狼 2011-05-06
  • 打赏
  • 举报
回复
百度一下,洗牌算法
Ken朱朱 2011-05-06
  • 打赏
  • 举报
回复
必须是9位吗,你可以 试试取此时的时间,因为此时的时间绝对是唯一的,再乘以个随机数,规范成9位
比如:Date mydate=new Date();
int i=mydate*Math.random();
再除以一个10000或别的取整,这样重复的几率就很小了。最好再遍历下是否重复
caimi1989 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caimi1989 的回复:]
引用 1 楼 abstruct 的回复:
为什么要随机数?
自己制定规则不行吗
你怎么判断它重复了!
[/Quote] 四楼的是数组 我要的是9位数!
tfish2014 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]
Java code
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test {
public static void main(String[] args) {
Random rand = new Random(System.nano……
[/Quote]

顶这种方式
huangchbao 2011-05-06
  • 打赏
  • 举报
回复
int[]iArray=new int[5];
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;
}
}
}
Ifnie 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]

Java code
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test {
public static void main(String[] args) {
Random rand = new Random(System.nanoTime(……
[/Quote]


+1
加载更多回复(14)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧