java从list随机取一定比例数据,直到不重复取完,代码可以帮提供不?
时间: 2023-03-20 08:02:51 浏览: 128
你可以参考这段代码:
List list=new ArrayList();
Random random=new Random();
while(list.size()<n){
int index=random.nextInt(list.size());
if(!list.contains(list.get(index))){
list.add(list.get(index));
}
}
相关问题
java从lsit中随机取10条数据,不能重复
您可以使用Java中的Collections.shuffle()方法来随机化列表中的元素,并使用subList()方法来获取列表的前10个元素,以满足您的需求。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RandomList {
public static void main(String[] args) {
List<Integer> mylist = new ArrayList<>();
mylist.add(1);
mylist.add(2);
mylist.add(3);
mylist.add(4);
mylist.add(5);
mylist.add(6);
mylist.add(7);
mylist.add(8);
mylist.add(9);
mylist.add(10);
mylist.add(11);
mylist.add(12);
mylist.add(13);
mylist.add(14);
mylist.add(15);
Collections.shuffle(mylist);
List<Integer> randomItems = mylist.subList(0, 10);
System.out.println(randomItems);
}
}
```
首先,我们创建了一个包含15个整数的列表mylist。然后,我们调用Collections.shuffle()方法来随机化列表中的元素。最后,我们使用subList()方法来获取列表的前10个元素,并将它们存储在randomItems变量中。最后,我们打印出随机选择的10个元素。请注意,这样可以确保选出的10个数字不重复。
java中Random随机函数不重复代码
在Java中,`java.util.Random` 类提供了一系列生成伪随机数的方法,包括整数、浮点数等。如果你想要生成不重复的随机数序列,你可以采用以下几种方法:
1. **创建多个实例**:因为每次创建 Random 实例都会得到一个新的随机数生成序列,所以可以创建多个 Random 对象,每个对象负责生成一段独立的随机数。
```java
Random random1 = new Random();
Random random2 = new Random();
int[] sequence1 = generateUniqueSequence(random1.nextInt(100), 10);
int[] sequence2 = generateUniqueSequence(random2.nextInt(100), 10);
```
2. **利用 BitSet 或者 HashSet**:通过维护一个集合,比如 BitSet 或者 HashSet,保证每次产生的随机数不会重复。
```java
Set<Integer> numbers = new HashSet<>();
while (numbers.size() < 10) {
int num = random.nextInt(100); // 生成0到99之间的随机数
if (!numbers.contains(num)) {
numbers.add(num);
}
}
// 获取不重复的序列
List<Integer> sequence = new ArrayList<>(numbers);
```
3. **自定义序列**:如果你想控制特定范围内的随机数并保持顺序,可以先生成一个包含所有可能值的数组,然后按需取值。
```java
final int MAX = 100;
int[] fullSequence = new int[MAX];
for (int i = 0; i < MAX; i++) {
fullSequence[i] = i;
}
int index = 0;
int nextNum;
while ((nextNum = fullSequence[index++]) < 10) { // 取前10个不重复数字
System.out.println(nextNum);
}
```
请注意,虽然上述方法可以在一定程度上避免重复,但如果你需要非常大的随机数序列且对性能有高要求,应考虑其他更高效的算法或数据结构。
阅读全文