首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求大家来帮新手解决个随即数的有关问题

2012-02-01 
求大家来帮新手解决个随即数的问题问题是:如何从0-9个数中依次随即取出5个,但是要保证这5个数都不相同,我

求大家来帮新手解决个随即数的问题
问题是:如何从0-9个数中依次随即取出5个,但是要保证这5个数都不相同,我自己想了很多方法,可是过程很繁琐,最终也没解决,希望大家帮我想个方法,并能给出用java写的过程,最好别太复杂了,小弟献出一半的分数谢大家。

[解决办法]
1:用Set 生成随机数,放入set,当set的size==5时,结束
2:List里放0--9,用Collections.shuffle(list)乱序,取头5个

[解决办法]
这个不是随机数,
初等数学里的排列与组合
[解决办法]

Java code
import java.util.Random;import java.util.Vector;public class GetNum {    private Vector<Integer> nums = null;    private Random random = null;    public GetNum() {        nums = new Vector<Integer>(10);        for (int i = 0; i < 10; i++) {            nums.add(i);        }        random = new Random();    }    public Vector<Integer> getNum() {        Vector<Integer> temp = new Vector<Integer>(5);        for (int i = 0; i < 5; i++) {            Integer integer = nums.get(random.nextInt(nums.size()));            temp.add(integer);            nums.remove(integer);        }        return temp;    }    public static void main(String... args) {        GetNum num = new GetNum();        System.out.println(num.getNum());    }}
[解决办法]
Java code
Random random = new Random();        Set<Integer> s = new HashSet<Integer>();                while(true){            int temp = random.nextInt(9);            s.add(temp);            if(s.size()==5) break;        }                for (Integer integer : s) {        System.out.println(integer);            }
[解决办法]
支持1楼的第2种方法,很佩服这想法
[解决办法]
http://topic.csdn.net/u/20111012/14/11b025f0-e55a-4db7-bcb8-14f312fbaa06.html

看4楼的
[解决办法]
Random r=new Random();
Set<Integer> set=new HashSet<Integer>();
whiel(set.size<6){
int count=r.nextInt(9);
set.add(count);
}
for(int count:set){
System.out.println(count);
}
[解决办法]
0 =< nextInt(n) < n
[解决办法]
方法一:
Java code
public List getRandomNumber(){        List all=new ArrayList();        for(int i=0;i<10;i++)all.add(i);//先放10个数到一个集合中                List num=new ArrayList();        for(int i=0;i<5;i++){  //获取5次            int index=(int)(Math.random()*(10-i));//每次产生一个随机索引            num.add(all.get(index));//获取索引处元素放置到num集合中            all.remove(index);//删除刚才已经获取的元素                           //注意每删除一个all集合中少一个元素,索引范围会缩小        }        return num;    }
[解决办法]
int a[]={0,1,2,3,4,5,6,7,8,9}
for(int i=0;i<5;i++){
nextInt(a.length-1)
}
[解决办法]
Java code
public class RandomNumber {    public static void main(String[] args) {        List<Integer> list=new ArrayList<Integer>();        Random roand= new Random();        int i=0;        while(i<5)        {            int num= roand.nextInt(10);            if(!list.contains(num))            {                list.add(num);                i++;            }        }                for(int j=0;j<list.size();j++)        {            System.out.println(list.get(j));        }    }} 


[解决办法]

探讨

1:用Set 生成随机数,放入set,当set的size==5时,结束
2:List里放0--9,用Collections.shuffle(list)乱序,取头5个

[解决办法]
int []a=new ArrayList({0,1,2,3,4,5,6,7,8,9})
for(int i=0;i<5;i++){
nextInt(a.length-1)
}
上面代码忘了移除元素了~~
把用list 代替 数组 

热点排行