• 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;
    
               }
    }

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

  • 相关阅读:
    SpringMvc 框架
    面试:你最大的长处和弱点分别是什么?这些长处和弱点对你在企业的业绩会有什么样的影响?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
    面向对象三大特性
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    JavaScript 引擎
    Spring Data JPA简介 Spring Data JPA特点
    博主博客
    微信相关
    关于正则表达式
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5024122.html
Copyright © 2020-2023  润新知