java 产生无重复的随机数,Java创建无重复的随机数
小编典典
最简单的方法是创建一个可能数字的列表(1..20或任何数字),然后用对其进行混洗Collections.shuffle。然后,只需考虑你想要的许多元素。如果你的范围最终等于你需要的元素数量(例如,用于洗牌的卡片),则这非常好。
如果你想要(说)1..10,000范围内的10个随机元素,那么效果就不太好-你最终会不必要地进行大量工作。到那时,最好保留到目前为止已生成的一组值,并保持循环生成数字直到下一个不存在为止:
if (max < numbersNeeded)
{
throw new IllegalArgumentException("Can't ask for more numbers than are available");
}
Random rng = new Random(); // Ideally just create one instance globally
// Note: use LinkedHashSet to maintain insertion order
Set generated = new LinkedHashSet();
while (generated.size() < numbersNeeded)
{
Integer next = rng.nextInt(max) + 1;
// As we're adding to a set, this will automatically do a containment check
generated.add(next);
}
但是,请谨慎选择设置-我非常有意地使用LinkedHashSet它,因为它会保持插入顺序,我们在这里关心它。
另一种选择是通过每次减小范围并补偿现有值来始终取得进展。因此,举例来说,假设你要使用0..9范围内的3个值。在第一次迭代中,你将生成0..9范围内的任何数字-假设你生成了4。
在第二次迭代中,你将生成一个范围为0..8的数字。如果生成的数字小于4,则应保持原样…否则将其添加一个。这样得到的结果范围是0..9,而不是4。假设我们以这种方式得到7。
在第三次迭代中,你将生成一个范围为0..7的数字。如果生成的数字小于4,则将其保持原样。如果是4或5,则要加1。如果是6或7,则要加两个。这样,结果范围是0..9,没有4或6。
2020-02-25
java 产生无重复的随机数,Java创建无重复的随机数相关推荐
- java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
Java如何实现生成n个不重复的随机数?本篇文章小编给大家分享一下Java实现生成n个不重复的随机数代码,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 需 ...
- java contains_Java基础教程|生成不重复随机数 java
生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...
- java生成不重复随机数_生成不重复随机数 java
生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...
- 1.7 Java创建对象详解(显式创建和隐含创建)
对象是对类的实例化.对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为.Java 对象的生命周期包括创建.使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与 ...
- python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...
- java 用流创建流_成为Java流大师–第1部分:创建流
java 用流创建流 在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标. 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的J ...
- java如何避免注释重复_Java 8中的可重复注释
java如何避免注释重复 使用Java 8,您可以对声明或类型重复相同的注释. 例如,要注册一个类仅应由特定角色在运行时访问,则可以编写如下内容: @Role("admin") @ ...
- 成为Java流大师–第1部分:创建流
在许多情况下,声明性代码(例如,具有Streams的功能组合)可提供出色的代码指标. 通过本动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的Java程序员. Str ...
- Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射
大家好,这是我在该博客上发表的有关Java 9功能的第一篇文章,今天您将了解我最喜欢的功能"收集的工厂方法" ,它是JEP 269的一部分.JEP代表JDK增强建议. 如果您曾经在 ...
- java无框架开发,DON: java 小型web项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...
#DON框架介绍 ##目标 启动零配置快速进入开发 开发时,请求controller路由零配置 配合windfly.jar工具包快速开发 最终实现加入jar包即可快速开发 ##主要特点 无需配置请求u ...
最新文章
- 【LeetCode | 二叉树前、中、后序遍历{递归法}实现】
- Swift:在Safari中打开App
- 超全PHP学习资源整理:入门到进阶系列
- Ubuntu18.04如何让桌面软件默认root权限运行?
- 【大牛疯狂教学】深入拆解java虚拟机百度云
- 构建制品不一致,后续工作都是白费 | 研发效能提升36计
- python代码没有反应_没有任何编程经验者不要被Python简明手册误导。
- 创建对象属性赋值的内存理解
- nand flash 原理简介
- CodeBlocks使用静态链接库
- ios开发中如何隐藏各种bar
- 012-JDK可视化监控工具-jstack
- JAVA上百实例源码以及开源项目
- 程序员也要学英语——限定词、形容词和副词
- tiktok运营全攻略
- 判定两颗二叉树是否相同
- 网站PV、UV的含义
- 浏览器打开微信公众号h5页面,增加cookie绕过微信授权登录
- AppleParty(苹果派)v3 支持 App Store 新定价机制 - 批量配置自定价格和销售范围
- swagger 怎么去掉get delete_听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
热门文章
- 解决:按截图 ctrl+alt+a QQ聊天窗口就自动最小化(QQ以外的可以截图)
- 提高虚拟机运行速度方法
- new TypeToken<List>>(){}.getType() 是什么意思
- maven02-----Maven项目构建的初次使用
- UGLY NUMBERS II
- python学习笔记 - lambda 与 函数嵌套
- PyCharm光标变粗的解决办法
- apache.commons.lang.StringUtils 使用心得
- C#实现反射调用动态加载的DLL文件中的方法
- 预祝大家2011农历新年快乐,宏“兔”大展,心想事成~