java如何产生随机数

一、java如何产生随机数?

1.打开eclipse

2.新建java项目,例如取名为“suijishu”点击完成

3.新建一个类进行测试

4.首先要在头部插入一个包

输入import java.util.Random;

5.输入代码:

public static int suiji = new Random().nextInt(10);

public static void main(String[] args) {

 System.out.print(suiji);

}

其中,public static int suiji = new Random().nextInt(10);这一行是生成随机数的关键,它可以生成0到9的一个随机数

package suijishu;

import java.util.Random;

public class suijishu{
    public static int suiji =new Random().nextInt(10);
    public static void main(String[] args){
        System.out.print(suiji);
    }
}

6.测试输出,就可以看到生成的随机数

二、java如何实现生成不重复的随机数

package suijishu;

import java.util.Random;

public class suijishu{
    public static int suiji =new Random().nextInt(10);
    public static void main(String[] args){
        System.out.print(suiji);
    
    
    }

           //设定几位数

           private static final int LENGTH = 8;

            /**

             * 这是典型的随机洗牌算法。

             * 流程是从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域)

             * 算法时间复杂度O(n)

             * @return 随机8为不重复数组

             */

           public static String generateNumber() {

               String no = "";

               // 初始化备选数组

               int[] defaultNums = new int[10];

               for (int i = 0; i < defaultNums.length; i++) {

                   defaultNums[i] = i;

               }

               Random random = new Random();

               int[] nums = new int[LENGTH];

               // 默认数组中可以选择的部分长度

               int canBeUsed = 10;

               // 填充目标数组

               for (int i = 0; i < nums.length; i++) {

                   // 将随机选取的数字存入目标数组

                   int index = random.nextInt(canBeUsed);

                   nums[i] = defaultNums[index];

                   // 将已用过的数字扔到备选数组最后,并减小可选区域

                   swap(index, canBeUsed - 1, defaultNums);

                   canBeUsed--;

               }

               if (nums.length > 0) {

                   for (int i = 0; i < nums.length; i++) {

                       no += nums[i];

                   }

               }

               return no;

           }

           /**

            * 交换方法

            * @param i 交换位置

            * @param j 互换的位置

            * @param nums 数组

            */

           private static void swap(int i, int j, int[] nums) {

               int temp = nums[i];

               nums[i] = nums[j];

               nums[j] = temp;

           }

           /**

            * 获取8位数

            * @return

            */

           public static String generateNumber2() {

               String no = "";

               int num[] = new int[8];

               int c = 0;

               for (int i = 0; i < 8; i++) {

                   num[i] = new Random().nextInt(10);

                   c = num[i];

                   for (int j = 0; j < i; j++) {

                       if (num[j] == c) {

                           i--;

                           break;

                       }

                   }

               }

               if (num.length > 0) {

                   for (int i = 0; i < num.length; i++) {

                       no += num[i];

                   }

               }

               return no;

           }
}

测试输出就会发现每次生成的随机数都不一样

 

posted @ 2015-12-06 19:13  秦萧不再  阅读(985)  评论(0编辑  收藏  举报