Java随机生成前N个不重复的整数详解编程语言

import java.io.BufferedOutputStream;   
import java.io.File;   
import java.io.FileNotFoundException;   
import java.io.FileOutputStream;   
import java.io.IOException;   
import java.io.OutputStream;   
import java.util.Random;   
   
/**  
 * 测试随机生成前N个不重复的整数  
 * @author Administrator  
 *  
 */   
public class TestRandom {   
    public static void main(String[] args) {   
        randomNumber2File("e:/random.txt");   
    }   
       
    /**  
     * 根据提供的路径生成相应的随机数  
     * @param path  
     */   
    public static void randomNumber2File(String path){   
        File file = new File(path);   
        OutputStream os = null;   
        try {   
            os = new BufferedOutputStream(new FileOutputStream(file));   
            byte[] buf = new byte[20];   
            for(int j = 0; j < 100; j++){   
                int[] arr = ranInt(9);   
                StringBuffer sb = new StringBuffer();   
                for(int i = 0; i < arr.length; i++){   
                    sb.append(arr[i]);   
                }   
                sb.append("/r/n");   
                buf = sb.toString().getBytes();   
                os.write(buf);   
            }   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }finally{   
            if(null != os){   
                try {   
                    os.close();   
                } catch (IOException e) {   
                    // TODO Auto-generated catch block   
                    e.printStackTrace();   
                }   
            }   
        }   
    }   
       
    /**  
     * 利用随机生成数组的索引实现随机,并通过交换实现不重复  
     * @param n  
     * @return  
     */   
    public static int[] ranInt(int n) {   
        int[] arr = new int[n];   
        int i,randomIndex,temp;   
        for(i = 0; i < n; i++){   
            arr[i] = i+1;   
        }   
        for(i = 1; i < n; i++){   
            randomIndex = ranIndex(0, i);   
            //交换当前元素和生成的随机元素   
            temp = arr[i];   
            arr[i] = arr[randomIndex];   
            arr[randomIndex] = temp;   
        }   
        return arr;   
    }   
       
    public static int ranIndex(int start, int end){   
        Random r = new Random();   
        int result;   
        result = r.nextInt(end);   
        return result;     
    }   
}  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10624.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论