最近写程序要用到这个方法,比如说我要生成50个在1000-2000范围内的随机数,而且不能重复,于是自己写了一个小算法,主体思想是这样的:
比如1000-2000的随机数,先生成一个1000-2000的数组,数组大小当然是1001,然后产生0-1000的随机数去取数组的值,取到之后将这个值和数组的最后一个值进行调换,再产生0-999的随机数去取数组中的值,直到取出我们想要的数量为止。(至于为什么不直接删除,是因为数组的删除比较消耗时间 )
具体代码如下:
/**
* 在一定范围内生成给定数量的不重复随机数, 如果开始到结束的数量少于num的数量会抛出数组越界的错误,
* 如果相等则会返回一个排好序的数组,即从begin到end 否则返回随机数组(list),不重复,不排序
*
* @author Cesar
* @param begin
* 开始值
* @param end
* 结束值
* @param num
* 要求数量
* @return
*/
public List<Integer> getRandomNum(int begin, int end, int num) {
int size = end-begin+1;
int[] all = new int[size];
Random random = new Random();
List<Integer> result = new ArrayList<Integer>();
int x;
if (size < num) {
throw new ArrayIndexOutOfBoundsException("数组越界");
} else if (size == num ) {
for (int i = 0; i < num; i++) {
result.add(begin++);
}
} else {
for(int i=0;i<size;i++){
all[i] = begin++;
}
for(int i = 0;i<num;i++){
x = random.nextInt(size);//获得坐标
result.add(all[x]);
all[x] = all[size-1];
size--;
}
}
return result;
}
分享到:
相关推荐
`nextInt(int bound)`方法会生成0到bound-1之间的随机数,如果需要生成指定范围内的随机数,可以调整边界: ```java int min = 1; int max = 100; int randomNum = rand.nextInt(max - min + 1) + min; ``` ...
本文将深入探讨如何在给定范围内生成N个不重复的随机数,主要包括两种主要方法。 首先,我们来了解一下Java中生成随机数的基本方式: 1. 使用`Math.random()`函数:这个方法会返回一个0.0到1.0之间(不包括1.0)的...
随机数是指在一定范围内无法预测的数字,它们的出现应该是均匀且无规律的。在计算机中,由于硬件和软件的限制,生成的“随机”数实际上是伪随机数,即通过一定的算法得到的一系列看起来随机的数,但这些数是可以预测...
Java编程实现生成给定范围内不重复随机数的方法是非常重要的一种技术,本文将主要介绍Java编程实现生成给定范围内不重复随机数的方法,结合实例形式总结分析了java基于数学运算与判断实现不重复随机数的生成功能。...
### Java随机数编程详解 ...无论是需要简单的小范围随机数,还是复杂的大范围随机数,甚至是遵循特定分布的随机数,Java都有相应的支持。在实际应用中,合理选择和使用这些机制,可以大大提高程序的功能性和安全性。
由于四位数的范围是从1000到9999(包含两端),因此我们需要确保生成的随机数在这个区间内。这通常可以通过以下步骤实现: 1. **生成一个0至9999之间的随机整数**:大多数编程语言都提供了生成随机数的功能,例如...
此外,随机数在数据分析中也有重要应用,如在假设检验中进行蒙特卡洛模拟,通过大量随机抽样来估计结果的概率分布。在机器学习中,随机初始化权重是神经网络训练的常见做法,有助于模型跳出局部最优。 对于压缩包中...
Java提供了多种生成随机数的方法,主要集中在`System`类、`Math`类以及`Random`类中。 一、Java随机数生成方式 1. `System.currentTimeMillis()`:返回当前系统时间的毫秒数,这是一个长整型(`long`)数值,可以...
以下是如何在Java中生成这个范围内随机数的详细步骤和相关知识点: 首先,Java提供了`java.util.Random`类来生成随机数。但是,根据给定的描述和标签,我们将使用`Math.random()`方法,这是一个更简洁的方法。`Math...
在给定的描述中,需求是点击一个"生成随机数"按钮后,程序应该在特定范围内生成一个随机整数。这个范围是闭区间[100000, 999999),意味着生成的随机数最小是100000,最大是999999。下面将详细介绍如何在Java中实现这...
生成的8位十六进制字符串在大多数情况下已经足够独特,但考虑到时间戳的精度,如果系统在同一秒内需要生成多个不重复的8位数字,可能需要结合其他策略,如添加进程ID、随机数或者序列号,以确保在极短时间内生成的ID...
本文档通过分析给定文件,详细介绍了如何在Java中生成随机数字和验证码,特别关注了安全随机数的生成方法。通过合理利用`java.security.SecureRandom`和`java.util.Random`类,可以有效地创建既符合功能需求又具备...
本文将深入探讨如何在各种编程语言中生成给定范围内的随机数,以及相关的策略和技巧。 首先,让我们了解什么是随机数。随机数是在一定范围内无法预测的数字,它们看起来是无规律的,且每个数出现的概率是均等的。在...
这种小程序通常包含一个或多个函数,能够根据用户需求生成指定范围内的随机整数或浮点数。它可能具有自定义种子功能,以便在需要可重复结果时使用,也可能会有选择是否生成唯一随机数的选项。 在编程中,生成随机数...
在给定的文件中,`ClassDemo.java`、`Test.java`和`MainControl.java`可能是实现随机数生成和组合逻辑的源代码文件。这些文件可能会包含使用`Random`类的实例,以及一些自定义的方法来生成和操作随机数。 组合,另...
这些类提供了在特定范围内生成随机整数或浮点数的方法,非常适合用于游戏场景,如本例中的数字猜测游戏。 描述中提到"数字游戏,随机数可以系统产生或者设置",这意味着游戏中有两种模式:一是完全随机,由系统生成...
例如,`java.util.Random`是Java中的随机数生成器,虽然在MATLAB中直接使用可能需要一些额外的步骤,但这种集成能力使得MATLAB能够利用Java丰富的库资源。 总结起来,MATLAB提供了多种方式来生成随机数,适用于不同...
接下来,在`generaterandom()`方法中实现了生成随机数的功能,可以根据需要生成浮点数或者指定范围内的整数。 #### 总结 在Java中生成随机字符串是一项基础而重要的任务,不同的应用场景可能需要选择不同的方法。...
例如,使用`std::uniform_int_distribution`可以生成指定范围内的整数随机数。 4. **校验与测试**:生成的随机数应通过统计测试,如Diehard测试或TestU01测试,以验证其随机性和均匀性。 5. **优化性能**:对于...
开发者可能通过实例化这个类,并调用其`nextInt()`方法来产生指定范围内的随机整数,模拟彩票的号码生成。 3. 用户输入:Java的`java.util.Scanner`类可用于从控制台获取用户输入。程序可能通过创建`Scanner`对象,...