posts - 2, comments - 0, trackbacks - 0, articles - 1

生成不重复的随机数字

Posted on 2011-10-29 23:27 应该干点什么 阅读(196) 评论(0)  编辑  收藏
问题描述:生成一个长度为5的数组,该数组中包含[1,10]之间的数字,且每个数组中的元素都不重复。
实现思路:首先初始化一个长度为10的数组A,该数组中的数字依次为1~10,然后实现一个循环次数为5的循环,第一次生成一个[0,9]之间的随机数作为数组标,将该数字赋值到结果数组B中的第一个元素,并将A数组中随机下标的元素和数组A中的第一个元素交换;有效数字减少1,;第二次生成一个[0,8]之间的随机数字作为下标。将该数组值赋值到数组B中的第二个元素,依次类推。

注:Math.random()生成一个[0,1)之间的随机小数

实现的代码如下:
public class norand {

    
public static void main(String[] args) {
        
int [] a=new int[10];     //原始数据数组
        int []b=new int[5];       //结果数据数组
        int index;    //随机下标
        int left=10;    // 剩余元素个数
        int temp;     //   临时数据
        
//初始化原始数组
        for(int i=0;i<a.length;i++){
            a[i]
=i+1;
        }

        
//随机元素
        for(int i=0;i<b.length;i++){
            index
=(int) (Math.random()*left); // 随机下标
            b[i]=a[index];    //存储结果数据
            
//交换数据
            temp=a[index];  
            a[index]
=a[left-1];
            a[left
-1]=temp;
            
//有效数据减少1
            left--;
        }

        
//输出结果  
        for(int i=0;i<b.length;i++){
            System.out.println(b[i]);
        }

            

    }


}




只有注册用户登录后才能发表评论。


网站导航: