JAVA随机数之多种方法从给定范围内随机N个不重复数
在Java中生成随机数有多种方法,例如使用Math类的random(方法,使用Random类,以及使用ThreadLocalRandom类。下面将介绍不同方法从给定范围内随机生成N个不重复数的实现。
方法一:使用Math类的random(方法
Math类的random(方法返回一个浮点数,在范围[0.0, 1.0)之间。我们可以通过将其乘以范围的长度,并强制转换为整数来获得在给定范围内的随机整数。
```java
nextint()方法int min = 1; // 最小值
int max = 100; // 最大值
int N = 10; // 需要生成的随机数个数
Set<Integer> set = new HashSet<>(;
while(set.size( < N)
int randomNum = min + (int)(Math.random( * (max - min));
set.add(randomNum);
for (int num : set)
System.out.println(num);
```
方法二:使用Random类
Random类是Java提供的一个伪随机数生成器。我们可以使用nextInt(方法从给定范围内生成一个随机整数。
```java
int min = 1;
int max = 100;
int N = 10;
Random rand = new Random(;
Set<Integer> set = new HashSet<>(;
while(set.size( < N)
int randomNum = Int(max - min + 1) + min;
set.add(randomNum);
for (int num : set)
System.out.println(num);
```
方法三:使用ThreadLocalRandom类
ThreadLocalRandom类是Java 7中引入的一个新类,它提供了线程本地的随机数生成器。通过使用nextInt(方法,我们可以从给定范围内生成一个随机整数。
```java
int min = 1;
int max = 100;
int N = 10;
Set<Integer> set = new HashSet<>(;
while(set.size( < N)
int randomNum = ThreadLocalRandom.current(.nextInt(min, max + 1);
set.add(randomNum);
for (int num : set)
System.out.println(num);
```
方法四:使用Collections类的shuffle(方法
Collections类的shuffle(方法可以随机打乱一个列表。我们可以先创建一个包含给定范围内所有整数的列表,然后使用shuffle(方法打乱列表,并取前N个数。
```java
int min = 1;
int max = 100;
int N = 10;
List<Integer> list = new ArrayList<>(;
for (int i = min; i <= max; i++)
list.add(i);
Collections.shuffle(list);
List<Integer> randomNums = list.subList(0, N);
for (int num : randomNums)
System.out.println(num);
```
总结:在Java中生成随机数的方法有很多种,可以根据具体需求选择适合的方法。以上给出的四种方法都可以从给定范围内生成N个不重复的随机数。可以根据实际情况选择其中一种方法来使用。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论