Arrays 从给定范围的数组中获取六个唯一组合的集合
我确实有一个问题,我有1-49之间的数字,现在的问题是如何从给定的样本中得到六个随机集的最大数量。像Arrays 从给定范围的数组中获取六个唯一组合的集合,arrays,random,Arrays,Random,我确实有一个问题,我有1-49之间的数字,现在的问题是如何从给定的样本中得到六个随机集的最大数量。像 int[] a1 = { 1, 2, 3 ,5,6,7 ... 49}; 从1到49这样的一个大数组中,我可以得到多少个唯一的数字或数组组合 1,2,3,4,5,6 2,1,4,5,8,9 2,1,0,2,4,5 ................ 我试图获得的是最大输出或可能的长度为6的唯一数组的数量。老实说,我已经尝试过写一个循环来读取数组,但是如何捕获六个随机数字是我遇到的问题,我可以做
int[] a1 = { 1, 2, 3 ,5,6,7 ... 49};
从1到49这样的一个大数组中,我可以得到多少个唯一的数字或数组组合
1,2,3,4,5,6
2,1,4,5,8,9
2,1,0,2,4,5
................
我试图获得的是最大输出或可能的长度为6的唯一数组的数量。老实说,我已经尝试过写一个循环来读取数组,但是如何捕获六个随机数字是我遇到的问题,我可以做得比这更进一步
for(int x=0;<a1.length;x++)
{
// here i believe i must turn the captured information
// into a muti dimentional array to cpature like '1,2,3,4,5,6' but how. am stuck
}
for(int x=0;如果我正确理解了您的问题,您需要的是n!/k!(n-k)!
,在本例中,它将是49!/(6!*(49-6)!=13983816
。如果您只想知道可能的组合数,则无需编写代码
如果你真的想列出所有这些,你需要一点耐心。实现这一点的一种方法是通过递归方法:
public class NOverK {
private static final int[] numbers = new int[6];
private static final int MAX = 49;
private static void output() {
System.out.println();
for (int n : numbers) {
System.out.print(n + " ");
}
}
private static void allCombinations(int x, int start) {
if (x > 0) {
for (int i = start; i <= MAX; i++) {
numbers[numbers.length - x] = i;
allCombinations(x - 1, i + 1);
}
} else {
output();
}
}
public static void main(String[] args) {
allCombinations(6, 1);
}
}
公共类NOverK{
私有静态最终整数[]个数=新整数[6];
专用静态最终int MAX=49;
私有静态void输出(){
System.out.println();
用于(整数n:数字){
系统输出打印(n+“”);
}
}
私有静态void所有组合(int x,int start){
如果(x>0){
对于(int i=start;i如果我正确理解了您的问题,您需要的是n!/k!(n-k)!
,在本例中是49!/(6!*(49-6)!=13983816
。如果您只想知道可能的组合数,则无需编写代码
如果你真的想列出所有这些,你需要一点耐心。实现这一点的一种方法是通过递归方法:
public class NOverK {
private static final int[] numbers = new int[6];
private static final int MAX = 49;
private static void output() {
System.out.println();
for (int n : numbers) {
System.out.print(n + " ");
}
}
private static void allCombinations(int x, int start) {
if (x > 0) {
for (int i = start; i <= MAX; i++) {
numbers[numbers.length - x] = i;
allCombinations(x - 1, i + 1);
}
} else {
output();
}
}
public static void main(String[] args) {
allCombinations(6, 1);
}
}
公共类NOverK{
私有静态最终整数[]个数=新整数[6];
专用静态最终int MAX=49;
私有静态void输出(){
System.out.println();
用于(整数n:数字){
系统输出打印(n+“”);
}
}
私有静态void所有组合(int x,int start){
如果(x>0){
对于(int i=start;i这个问题在过去的堆栈溢出中已经被问过好几次了。例如,看看下面的答案:
这个问题的答案也包含许多不同编程语言(Java、Python、C、C#等)的问题解决方案。请查看或调整满足您需求的解决方案
您可以使用关键字在堆栈溢出(右上角的搜索字段)中搜索其他问题/答案
[算法][组合]
谷歌搜索也会为您的问题提供多种解决方案。请尝试使用以下关键词:
无重复的java算法组合
或
c#无重复的算法组合这个问题在过去的堆栈溢出中曾被问过几次。例如,请看以下答案:
这个问题的答案也包含许多不同编程语言(Java、Python、C、C#等)的问题解决方案。请查看或调整满足您需求的解决方案
您可以使用关键字在堆栈溢出(右上角的搜索字段)中搜索其他问题/答案
[算法][组合]
谷歌搜索也会为您的问题提供多种解决方案。请尝试使用以下关键词:
无重复的java算法组合
或
c#无重复的算法组合我可能误解了你的问题,但这不只是一个组合和二项式系数问题吗?下面是一个解决方案的解释:另外,为什么你不尝试一些东西,展示一些你已经尝试过的代码,我们将尝试指出你做得不对/对?你可以有一个重复集合的组合,但整个集合不能有与其他集合相似的所有数字。例如,1,2,3,4,5,6 23,3,1,4,2,5我可能误解了你的问题,但这不只是一个组合和二项式系数问题吗?下面是一个解决方案的解释:另外,你为什么不尝试一些东西并展示一些你需要的代码我已经试过了,我们将试着指出你做错了/对了什么?你可以有一组重复的集合,但整个集合不能有与其他集合相似的所有数字。例如,1,2,3,4,5,6 23,3,1,4,2,5我想列出它们down@Bels没有我想象的那么长:在我的机器上185秒(由于System.out.print-没有该选项的算法要快得多)我想列出它们down@Bels它没有我预期的那么长:在我的机器上运行185秒(由于System.out.print-没有它的算法要快得多)