Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无数组的java随机数生成器_Java_Random_Duplicates - Fatal编程技术网

无数组的java随机数生成器

无数组的java随机数生成器,java,random,duplicates,Java,Random,Duplicates,我对Java完全陌生,正在做作业。我需要在1-49范围内生成6个随机数,这很简单。 然而,复杂的是数字不能重复。 条件语句的唯一选项是while循环或if-else语句。 数组和所有其他循环都是此分配的禁区。 我真的需要一些关于物流的建议,如何应用我的选择。我意识到,如果没有数组和其他循环,我将有大量重复的代码,但可以处理这些代码。我只是需要一些人帮我解决这个问题 Set values=newhashset(); Set<Integer> values = new HashSet&l

我对Java完全陌生,正在做作业。我需要在1-49范围内生成6个随机数,这很简单。 然而,复杂的是数字不能重复。 条件语句的唯一选项是while循环或if-else语句。 数组和所有其他循环都是此分配的禁区。 我真的需要一些关于物流的建议,如何应用我的选择。我意识到,如果没有数组和其他循环,我将有大量重复的代码,但可以处理这些代码。我只是需要一些人帮我解决这个问题

Set values=newhashset();
Set<Integer> values = new HashSet<>();
Random rand = new Random();

while (values.size() <= 6) {
    int  n = rand.nextInt(50) + 1;
    values.add(n);
}
System.out.println(values);
Random rand=新的Random(); 而(values.size()
Set values=new HashSet();
Random rand=新的Random();

而(values.size()就像在前6张牌中洗牌一样

public void shuffle() {
    int[] array = new int[49];
    for (int i = 0; i < array.length; i++) {
        array[i] = i + 1;
    }

    // we need first 6 random cards
    for (int i = 0; i < 6; i++) {
        int index = (int) (Math.random() * (( array.length - i) + 1));
        int temp = array[i];
        array[i] = array[index];
        array[index] = temp;
    }

    for (int i = 0; i < 6; i++) {
        System.out.print("[" + array[i] + "]");
    }
    System.out.println();
}
public void shuffle(){
int[]数组=新的int[49];
for(int i=0;i
就像在前6张牌中洗牌一样

public void shuffle() {
    int[] array = new int[49];
    for (int i = 0; i < array.length; i++) {
        array[i] = i + 1;
    }

    // we need first 6 random cards
    for (int i = 0; i < 6; i++) {
        int index = (int) (Math.random() * (( array.length - i) + 1));
        int temp = array[i];
        array[i] = array[index];
        array[index] = temp;
    }

    for (int i = 0; i < 6; i++) {
        System.out.print("[" + array[i] + "]");
    }
    System.out.println();
}
public void shuffle(){
int[]数组=新的int[49];
for(int i=0;i
这似乎是一个在没有数组的情况下尝试的相当奇怪的练习。这是可能的,但我认为它对学习Java没有特别的指导意义,因为它更像是一个数学练习,而不是一个编程练习

为了在1-49范围内生成6个不同的随机数,您基本上必须为这49个数字中的每一个决定是否“选择”它,限制条件是您将只选择6个数字。因此,您需要确定
选择(49,6)
可能的组合之一

所以,你可以这样做:

int numToPick = 6;
for (int i = 1; i <= 49; ++i) {
  if (shouldPick(i, numToPick)) {
    System.out.println(i);
    --numToPick;
  }
}
int numToPick=6;

对于(int i=1;i来说,在没有数组的情况下尝试这似乎是一个相当奇怪的练习。这是可能的,但我认为它对学习Java没有特别的指导意义,因为它更像是一个数学练习,而不是编程练习

为了在1-49范围内生成6个不同的随机数,您基本上必须为这49个数字中的每一个决定是否“选择”它,限制条件是您将只选择6个数字。因此,您需要确定
选择(49,6)
可能的组合之一

所以,你可以这样做:

int numToPick = 6;
for (int i = 1; i <= 49; ++i) {
  if (shouldPick(i, numToPick)) {
    System.out.println(i);
    --numToPick;
  }
}
int numToPick=6;

对于(int i=1;i,您需要有效地排除已经选择的可能性:

Random rand = new Random();
int first = rand.nextInt(49) + 1;
int second = rand.nextInt(48) + 1;
int third = rand.nextInt(47) + 1;
int fourth = rand.nextInt(46) + 1;
int fifth = rand.nextInt(45) + 1;
int sixth = rand.nextInt(44) + 1;

if (first <= second) second++;
if (first <= third) third++;
if (first <= fourth) fourth++;
if (first <= fifth) fifth++;
if (first < sixth) sixth++;

if (second <= third) third++;
if (second <= fourth) fourth++;
if (second <= fifth) fifth++;
if (second <= sixth) sixth++;

if (third <= fourth) fourth++;
if (third <= fifth) fifth++;
if (third <= sixth) sixth++;

if (fourth <= fifth) fifth++;
if (fourth <= sixth) sixth++;

if (fifth <= sixth) sixth++;
Random rand=new Random();
int first=rand.nextInt(49)+1;
int second=rand.nextInt(48)+1;
int THORD=兰德·奈克斯汀(47)+1;
int FIRSTH=兰德·奈克斯汀(46)+1;
int FINTH=兰特nextInt(45)+1;
int sixth=兰特nextInt(44)+1;

如果(首先您需要有效地排除已经选择的可能性:

Random rand = new Random();
int first = rand.nextInt(49) + 1;
int second = rand.nextInt(48) + 1;
int third = rand.nextInt(47) + 1;
int fourth = rand.nextInt(46) + 1;
int fifth = rand.nextInt(45) + 1;
int sixth = rand.nextInt(44) + 1;

if (first <= second) second++;
if (first <= third) third++;
if (first <= fourth) fourth++;
if (first <= fifth) fifth++;
if (first < sixth) sixth++;

if (second <= third) third++;
if (second <= fourth) fourth++;
if (second <= fifth) fifth++;
if (second <= sixth) sixth++;

if (third <= fourth) fourth++;
if (third <= fifth) fifth++;
if (third <= sixth) sixth++;

if (fourth <= fifth) fifth++;
if (fourth <= sixth) sixth++;

if (fifth <= sixth) sixth++;
Random rand=new Random();
int first=rand.nextInt(49)+1;
int second=rand.nextInt(48)+1;
int THORD=兰德·奈克斯汀(47)+1;
int FIRSTH=兰德·奈克斯汀(46)+1;
int FINTH=兰特nextInt(45)+1;
int sixth=兰特nextInt(44)+1;

如果(首先如果不能使用数组或其他集合,可以创建6个变量来保存生成的数字

public class Generate6Number {

public static void main(String[] args) {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int num4 = 0;
    int num5 = 0;
    int num6 = 0;

    int count = 0;

    while (count < 6) {
        int numGen = (int) (Math.random() * 49);

        if (numGen != num1 &&
            numGen != num2 &&
            numGen != num3 &&
            numGen != num4 &&
            numGen != num5) {
            if (num1 == 0)
                num1 = numGen;
            else if (num2 == 0)
                num2 = numGen;
            else if (num3 == 0)
                num3 = numGen;
            else if (num4 == 0)
                num4 = numGen;
            else if (num5 == 0)
                num5 = numGen;
            else 
                num6 = numGen;

            count++;
        }
    }   

    System.out.println("Number 1: " + num1);
    System.out.println("Number 2: " + num2);
    System.out.println("Number 3: " + num3);
    System.out.println("Number 4: " + num4);
    System.out.println("Number 5: " + num5);
    System.out.println("Number 6: " + num6);

}

}
公共类生成编号{
公共静态void main(字符串[]args){
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
int num6=0;
整数计数=0;
而(计数<6){
int numGen=(int)(Math.random()*49);
如果(numGen!=num1&&
numGen!=num2&&
numGen!=num3&&
numGen!=num4&&
numGen!=num5){
如果(num1==0)
num1=numGen;
else如果(num2==0)
num2=numGen;
否则如果(num3==0)
num3=numGen;
else if(num4==0)
num4=numGen;
else if(num5==0)
num5=numGen;
其他的
num6=numGen;
计数++;
}
}   
System.out.println(“数字1:+num1”);
系统输出打印项次(“编号2:+num2);
系统输出打印项次(“3号:+num3);
System.out.println(“编号4:+num4”);
System.out.println(“数字5:+num5”);
System.out.println(“数字6:+num6”);
}
}

如果不能使用数组或其他集合,可以创建6个变量来保存生成的数字

public class Generate6Number {

public static void main(String[] args) {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int num4 = 0;
    int num5 = 0;
    int num6 = 0;

    int count = 0;

    while (count < 6) {
        int numGen = (int) (Math.random() * 49);

        if (numGen != num1 &&
            numGen != num2 &&
            numGen != num3 &&
            numGen != num4 &&
            numGen != num5) {
            if (num1 == 0)
                num1 = numGen;
            else if (num2 == 0)
                num2 = numGen;
            else if (num3 == 0)
                num3 = numGen;
            else if (num4 == 0)
                num4 = numGen;
            else if (num5 == 0)
                num5 = numGen;
            else 
                num6 = numGen;

            count++;
        }
    }   

    System.out.println("Number 1: " + num1);
    System.out.println("Number 2: " + num2);
    System.out.println("Number 3: " + num3);
    System.out.println("Number 4: " + num4);
    System.out.println("Number 5: " + num5);
    System.out.println("Number 6: " + num6);

}

}
公共类生成编号{
公共静态void main(字符串[]args){
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
int num6=0;
整数计数=0;
而(计数<6){
int numGen=(int)(Math.random()*49);
如果(numGen!=num1&&
numGen!=num2&&
numGen!=num3&&
numGen!=num4&&
numGen!=num5){
如果(num1==0)
num1=numGen;
else如果(num2==0)
num2=numGen;
否则如果(num3==0)
num3=numGen;
else if(num4==0)
num4=numGen;
else if(num5==0)
num5=numGen;
其他的
num6=numGen;
计数++;
}
}   
System.out.println(“数字1:+num1”);
系统输出打印项次(“编号2:+num2);