随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧:

int num = (int) ((Math.random() * 9 + 1) * 100000);

最终num就是需要的6位随机数。

同理要是想得到随机的五位数和七位数呢?

//随机的五位数
int num = (int) ((Math.random() * 9 + 1) * 10000);
//随机的七位数
int num = (int) ((Math.random() * 9 + 1) * 1000000);

以此类推想得到随机的n位数都可以,只需要改动后面的100000就好。

如果想生成随机的六位数,并且每位数都不重复:

//随机生成六位数,并且每位数都不重复public static int Num() {int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};Random rand = new Random();for (int i = 10; i > 1; i--) {int index = rand.nextInt(i);int tmp = array[index];array[index] = array[i - 1];array[i - 1] = tmp;}int result = 0;for (int i = 0; i < 6; i++) {result = result * 10 + array[i];}if (String.valueOf(result).length() == 6) {return result;} else {return Num();}}

以上就是随机生成的六位数,并且可以达到每位数都不重复。

····························································分割性·····························································

针对有技术朋友说可能会生成首位是0的数字,这样生成的随机数就变成了五位数,在此我做一下论证:

首先Math.random()的意思是得到一个范围在0-1之间的double类型的随机小数(例如:0.52015784514,也有可能是0.00597308946201);

Math.random()的取值是0-1之间的随机小数(事实上取不到0和1);

Math.random() * 9表示乘以9以后是0-9之间的随机小数,也就是0.****到8.****之间的小数(大于0而小于9);

(Math.random() * 9 + 1)表示:"+1"之后就会得到1-9之间的随机小数,也就是1.******到9.*******之间的小数;

((Math.random() * 9 + 1) * 100000)表示:乘以100000后,这个随机小数的小数点就会往后移六位,得到1*****.*****到9*****.******之间的数字(现在小数点前是六位数);

最后(int) ((Math.random() * 9 + 1) * 100000)表示:经过int类型转换之后,得到了首位数一定不是0的随机六位数

还可以通过以下代码运行之后打印结果看一下:

        //生成一千个随机六位数for (int i = 0; i < 5000; i++) {int num = (int) ((Math.random() * 9 + 1) * 100000);System.out.println("随机生成的六位数:" + num);String num_str = String.valueOf(num);//验证是否会生成五位数,或者首位是0的数if (num_str.length() == 5) {System.out.println("生成的五位数:" + num);}}

以上代码是生成了5000个随机的六位数,以下是结果:

随机生成6位数、随机生成不重复的6位数相关推荐

  1. R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串

    R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...

  2. java生成不重复8位数字_如何生成8位随机不重复的数字编号

    在Java中难免会使用到生成随机不重复的数字编号的时候,那么你知道如何生成8位随机不重复的数字编号吗?下面我们就跟爱站小编一起去看看吧. package com.jjinfo.common.util; ...

  3. java 随机生成不重复的数字_生成8位随机不重复的数字编号的方法

    生成随机不重复的数字编号在某些情况下也会用到,本文以生成8位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下 package com.jjinfo.common.util; ...

  4. Java生成随机数并随机输出不重复的值

    一个小Demo,网上有很多类似的代码,测试了一下网上的代码为了让随机输出值不重复,重复循环达到目的的效果,但循环次数过多严重影响性能. 通过ArrayList的remove方法实现了生成随机数并随机输 ...

  5. java实现生成指定位数随机字符串要求包含数字大小写字母三种类型字符

    今天接到一个初始密码生成的需求,要求生成的密码长度在8-16位,其中必须包含数字.大写字母.小写字母.平常都是使用hutool工具类进行字符处理,发现没有提供满足要求的方法,自己就根据现有的方法组装实 ...

  6. php生成8位随机不重复的邀请码

    生成8位随机邀请码 : // 制作邀请码public function make_coupon_card() {$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';$rand = ...

  7. node 生成随机头像_唯一ID生成算法剖析

    引在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下.唯一ID有哪些特性或者说要求呢 ...

  8. Linux Shell 生成随机数和随机字符串

    日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 本文 ...

  9. java生成随机10位数字_用Java生成10个随机的四位数字

    要生成随机整数,请将Random类与nextInt一起使用.首先,创建一个Random对象-Random rand = new Random(); 上面的Random是一个随机数生成器.现在,一一挑选 ...

  10. C语言生成n个随机坐标,c语言如何生成随机数 怎样用c语言生成n个随机数?

    C语言中如何产生很大的随机数?这个可以一个一个的来生成啊,每次生成一个0-9之前的随机数,然后生成几次 组合起来就可以了. C语言 如何连续产生随机数? 如果我想用C在1s的时间内连续产生多个随机数, ...

最新文章

  1. 1020. Tree Traversals (25)
  2. JavaScript 技术篇-js自动转换类型,自动转换为字符串,js避免自动转换的坑
  3. promise使用promise进行判断网络状态
  4. [新手及懒人适用]轻松恢复误Ghost的硬盘
  5. 免费开源的 .NET 分布式组件库 Exceptionless Foundatio
  6. 堆栈的定义与操作-顺序存储,链式存储(C语言)
  7. LeetCode 1681. 最小不兼容性(回溯+剪枝)
  8. 《城市规划信息化体系》和《城市规划与建设地理信息系统》读书笔记及规划信息化的碎碎念...
  9. 移动app测试的多样性_移动App测试一些崩溃原因及触发崩溃的场景
  10. 2021牛客暑期多校训练营5,签到题BDHJK
  11. 绿盟科技亮相中国石油石化企业信息技术交流大会
  12. python头像右上角加红色数字_利用python实现微信头像加红色数字功能
  13. mysql怎么查合计_mysql-查询不同列的数量合计
  14. GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...
  15. VOIP系统开源实现PCMA/PCMU/AMR/G729常用格式解码服务
  16. 18-2mapreduce的案例加强——好程序
  17. isDebugEnabled作用
  18. WebSocket接口测试方法
  19. Charles联动Burp-新世界的大门
  20. linux给目录赋访问权限_在Linux上给用户赋予指定目录的读写权限

热门文章

  1. Matplotlib——数据可视化plt.plot、plt.figure、
  2. 关于JAVA网络编程UDP和TCP(上)
  3. 当你变得见人说人话,见鬼说鬼话......
  4. 求职面试技巧_获得求职信的最大爆炸的5个技巧
  5. SHEIN:中国企业全球化正确之路
  6. 当程序员没了互联网,该如何继续学习写代码
  7. WPS(Word)怎么快速批量查找文档中的数字?
  8. Linux内核中网络数据包的接收框架
  9. pmp直方图与帕累托图的区别_pmp考试必知的十个图和表
  10. 网络编程:套接字 socket