我想制作一个小程序,通过添加两个随机数来获得所需的结果。例如,我们想要的数字是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);
}
}
答案 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;
现在first
和second
保证总和达到最大数量。我假设,对于给定的总和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。
因此:你只需要一个随机数,而不是两个!