java - 避免重复值

标签 java

我建立了一个范围,我想从该范围 (10%) 中选择一组随机数,同时确保它没有重复值。

我如何以及在我的程序中的何处编写代码?

以下是摘录。

// Number of Items      
int range = numberOfItems [itemNumber - 1];
// Determine 10 percent of the given range
int tenPercentOfRange = (int)(range * 0.1);
int number = 0;
int[] numbers = new int[tenPercentOfRange];

int index = 0;

for(;index < tenPercentOfRange;)
{
  // Randomly select 10% of the items for a given item.
  number = (int) (range * Math.random()) + 1;
  if(!Arrays.asList(numbers).contains(number))
  {
    numbers[index] = number;
    index++; 
    // ..................

最佳答案

最简单的方法(虽然不是最有效的)可能是用所有元素填充一个列表,使用 Collections.shuffle() , 然后选择前 10% 的元素。

由于排列没有两次相同的主菜(假设您以这种方式填充它),前 10% 的元素也将是唯一的,因此它适合。

关于java - 避免重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567622/

相关文章:

java - AWS Polly Java 示例

java - PS MarkSweep 是哪个垃圾收集器

java - 我想在播放音乐并且按钮显示 "play"后将搜索栏重置为开始位置

java - Java中如何找出方法被调用的地方?

java - FreeMarker 和 OSGI

java - 在循环java中打印计数

java - Spring Boot JPQL 不适用于特定条件

java - org.springframework.web.util.NestedServletException : Request processing failed; nested exception is java. lang.NullPointerException in REST with Spring

java - 只接受某些证书

java - 使用 Logback 但 Log4j 开始显示 WARN no Appenders