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

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

  • 相关阅读:
    Java 程序员常用的 22 个Linux命令
    20190131 经验总结:如何从rst文件编译出自己的sqlalchemy的文档
    Python学习笔记:Flask-Migrate基于model做upgrade的基本原理
    20180821 Python学习笔记:如何获取当前程序路径
    网络编程之 keepalive(zz)
    java socket编程中backlog的含义(zz)
    20170814 新鲜:EChart新增了日历图,要想办法用起来
    Canvas 和 SVG 的不同
    androidstudio全局搜索快捷键Ctrl+Shift+F失效的解决办法
    Android support 26.0.0-alpha1 产生的问题(zz)
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5024122.html
Copyright © 2020-2023  润新知