我有一个[36]长的对象数组。我必须在所有者之间随机分配这些对象,一个对象只能拥有一个所有者。用户可以设置2 - 5所有者和它是这样的:Java随机分布
- 2所有者 - 14对象/所有者 - 8对象而不所有者
- 3所有者 - 10 /所有者 - 6个空
- 4所有者 - 8 /所有者 - 4个空
- 5所有者 - 6 /所有者 - 6空
我想在情况2中如何设置6个随机对象所有者为0(没有所有者)要求,例如,与10随机对象为每个所有者?
我有一个[36]长的对象数组。我必须在所有者之间随机分配这些对象,一个对象只能拥有一个所有者。用户可以设置2 - 5所有者和它是这样的:Java随机分布
我想在情况2中如何设置6个随机对象所有者为0(没有所有者)要求,例如,与10随机对象为每个所有者?
从问题中不完全清楚你想要完成什么,但是你可以用Collections.shuffle()
函数实现一些改组。
int[] shuffle = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
List<Integer> intList = new ArrayList<Integer>();
for (int i : shuffle) {
intList.add(i);
}
Collections.shuffle(intList);
System.out.println(intList);
一个可能的结果是:
[1, 2, 0, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0, 1, 1, 0, 0, 2, 1, 2, 2, 1, 0, 1, 0, 0, 2, 1, 2, 2, 1, 2, 1, 2, 0, 1]
参考文献:
问题迎刃而解 首先我创建其中包含4种不同的情况下的2D阵列
public int[][] shuffle = {{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5}};
然后在一个方法中,我根据用户输入将需要的行复制到新的数组中。我在原始的1d阵列上使用了Fisher - Yates shuffle,并且在每个所有者中为每个所有者调用了一个setter方法。 是这样的:
for(int i = 0; i < objectArray.length; i++){
int helper = shuffle1d[i];
objectArray[i].setObjectOwner(helper);
}
这不是很清楚你要完成什么,你一定可以更具体的不是“没有工作”? – meriton
根据您的描述,物体分配给所有者尚不清楚。另外,你遇到的任何问题都不清楚。请提供更详细的说明。 – pca
我试图用不同的措词。 – Greg