我正在尝试随机调整数组中的整数。这似乎很简单,但是我必须对它们进行洗牌,以便它们仍然保持特定的顺序(奇数,偶数,奇数,偶数等)。例如,如果原始数组包含[1、2、3、4、5、6、7、8],则改组后的数组可能看起来像[5、8、7、4、1、6、3、2],但始终保持相同的交替顺序,从奇数开始。
感谢您的帮助。 顺便说一句,这不是我的确切作业问题。我只想弄清楚该如何做才能做作业。我不知道从哪里开始。
答案 0 :(得分:4)
我可能会:
答案 1 :(得分:0)
一种改组数组的方法是“随机排序”项目。
例如,如果您使用的是Java 8或更高版本,则可以提供一个如下所示的lambda排序比较器,该排序比较器在排序操作期间的每次迭代中仅返回正或负索引以获得改组的结果:
#!/usr/bin/env python3
import os
perlscript = "perl " + " perlscript.pl " + " /home/user/Desktop/data/*.txt " + " >> " + "/home/user/Desktop/results/output.txt"
os.system(perlscript)
答案 2 :(得分:0)
<script type="text/javascript">
$(document).ready(function() {
$('select[name="productCategory"]').on('change', function() {
console.log($(this).val());
var categoryID = $(this).val();
if(categoryID!=null) {
$.ajax({
type:"GET",
title: "subCategory",
url: "admin/Category/getSubCategory/"+categoryID,
contentType: "application/json",
datatype: "json",
success: function(result){
console.log("subCategory Success");
parsedobj = JSON.parse(result);
$('select[name="productSubCategory"]').empty();
parsedobj = JSON.parse(result)
var appenddata='';
var subCat = $('#productSubCategory');
$.each(parsedobj, function(index, value)
{
$('select[name="productSubCategory"]').append('<option value="'+ value.subCategoryID +'">'+ value.subCategory +'</option>');
console.log("valueID : "+value.subCategoryID+" , "+"value.name : "+value.subCategory);
});
$('#productSubCategory').change();
},
error: function(xhr, textStatus, error){
console.log('categoryID failed');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}else{
$('select[name="productSubCategory"]').empty();
console.log('categoryID is null');
}
});
});
数组为Collections.shuffle(Arrays.asList(array));
我得到输出[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
请注意,它不能与基本数组一起使用,[9, 5, 8, 2, 0, 7, 4, 3, 6, 1]
不能仅与int[]
一起使用
答案 3 :(得分:0)
您可以通过相应地实现List<Integer>
作为相关元素的 view 来让数组的所需元素以AbstractList
的形式出现{em}数组元素。然后,列表上的简单Collections#shuffle
就可以解决问题。
乍一看,这似乎是“非常规的”,但具有一些优点:
int
个数组上运行(尽管您可以根据需要将其更改为Integer
)在此处以MCVE的形式实现:
import java.util.AbstractList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class ConstrainedShuffle
{
public static void main(String[] args)
{
int array[] = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
System.out.println("Before: " + Arrays.toString(array));
constrainedShuffle(array, new Random(0));
System.out.println("After : " + Arrays.toString(array));
}
private static void constrainedShuffle(int array[], Random random)
{
Collections.shuffle(asList(array, 0, 2), random);
Collections.shuffle(asList(array, 1, 2), random);
}
private static List<Integer> asList(int array[], int offset, int stride)
{
int size = (array.length - offset + stride - 1) / stride;
return new AbstractList<Integer>()
{
@Override
public Integer get(int index)
{
return array[offset + index * stride];
}
@Override
public Integer set(int index, Integer element)
{
int i = offset + index * stride;
Integer old = array[i];
array[i] = element;
return old;
}
@Override
public int size()
{
return size;
}
};
}
}