从两个随机数的和中获取所需输入的Java程序

从两个随机数的和中获取所需输入的Java程序,java,random,Java,Random,我想做一个小程序,通过添加两个随机数来获得想要的结果。例如,我们想要的数字是30,那么随机的1号和2号应该是15-15、13-17、10-20或其他任何数字。我做了这个程序,它显示随机数的和,但不是期望的和 import java.util.*; import java.util.Random; public class Problem { public static void main(String[] args) { Scanner sc = new Scanner

我想做一个小程序,通过添加两个随机数来获得想要的结果。例如,我们想要的数字是30,那么随机的1号和2号应该是15-15、13-17、10-20或其他任何数字。我做了这个程序,它显示随机数的和,但不是期望的和

import java.util.*;
import java.util.Random;

public class Problem {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        Random random = new Random();
        int r = rand.nextInt(100) + 1;
        int r1 = random.nextInt(100) + 1;

        int sum = r + r1;
        System.out.println(r + " + " + r1 + " sum is: " + sum);
    }
}
由我来解决

import java.util.*;
 import java.util.Random;
 public class Problem { 
public static void main(String[] args) {    

    Scanner sc= new Scanner(System.in);
    Random rand= new Random(); 
      Random random= new Random();
     int r= rand.nextInt(100)+1;
      int n=0;
      int sum= sc.nextInt();
      n= sum-r;
       sum= r+n;

     System.out.println(r +" + "+n+ " sum is: " + sum);  
   } 
}

你的问题其实不在你的代码中;但你的逻辑/数学是有缺陷的:你看,当你得到三个数字时,比如

m+n=o

m是一个随机数,o是固定的;那么n=o-m


因此:您只需要一个随机数,而不是两个

只需选择具有总和上限的范围内的第一个数字,然后保留第二个数字作为总和与第一个数字的差值:

Random rn = new Random();
int max = 30;
int first = rn.nextInt(max) + 1;
int second = max - first;

现在,第一个和第二个的总和保证达到最大值。我假设,对于给定的最大和,最小的数字是1。

我想你在寻找这个:

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

Random rand = new Random();
int r1 = rand.nextInt(n) + 1; // only one random number is needed
int r2 = n-r1; // other will be subtract of n and r1

System.out.println(r1 + " + " + r2 + " sum is: " + n);

给定所需数字,生成一个随机数,然后从所需数字中减去该随机数,得到另一个随机数。代码-

import java.util.*;
import java.util.Random;
import java.util.Scanner;

public class Problem { 
    public static void main(String[] args) { 
        Scanner sc = new Scanner(System.in);
        int desiredNumber = sc.nextInt();
        Random random = new Random();

        int r1 = desiredNumber>0?(random.nextInt(desiredNumber)+1):0;
        int r2 = desiredNumber - r1;

        System.out.println("The desired number is : " + desiredNumber);
        System.out.println("The two random numbers are : " + r1 + " and " + r2);
   } 
}

你的问题其实不在你的代码中;但你的逻辑/数学是有缺陷的:你看,当你得到三个数字时,比如

m+n=o

m是一个随机数,o是固定的;那么n=o-m


因此:您只需要一个随机数,而不是两个

这意味着第一个数字是随机的。其他的将是随机的1?你应该有n=o-m或者m=o-n。是的,在这段时间内我已经计算过了。但还是:谢谢!