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

时间:2016-09-10 05:55:23

标签: 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(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);  
   } 
}

5 个答案:

答案 0 :(得分:1)

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

m + n = o

和m是随机数,o是固定的;然后 n = o-m。

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

答案 1 :(得分:1)

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

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

现在firstsecond保证总和达到最大数量。我假设,对于给定的总和max,最小的数字是1

答案 2 :(得分: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);

答案 3 :(得分:1)

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

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);
   } 
}

答案 4 :(得分:0)

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

m + n = o

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

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