只有正数 - 随机和发生器[JAVA]

时间:2016-11-12 18:48:31

标签: java

我试图创建一个生成随机总和的随机和生成器!

我创建的唯一问题是,它可以生成具有否定结果的总和。所以我希望它只能产生积极结果的总和。

示例:

<input id="AssetLabel" name="AssetLabel" type="hidden"       
value="System.Data.Entity.DynamicProxies.AssetLabel_32653C4084FF0CBCFDBE520EA1FC5FE4F22B6D9CD6D5A87E7F1B7A198A59DBB3" 
/>

我的代码:

7-10 = -3

5 个答案:

答案 0 :(得分:1)

由于您将始终处理正整数,因此您唯一的问题是在减法情况下检查负数。我还建议切换到Random类来生成随机整数。解决负面结果的一种方法是翻转你减去的数字。

boolean flip = false;
int num1, num2, op, result;
String operation;
Random r = new Random();

num1 = r.nextInt(8)+2;
num2 = r.nextInt(8)+2;
op = r.nextInt(4);    

switch(op) {
case 0:
    // Always be positive.
    operation = "+";
    result = num1+num2
    break;
case 1:
    // Could be negative if num2 is larger than num1. Simply flip the numbers.
    flip = num1 < num2;
    operation = "-";
    result = flip ? num2-num1 : num1-num2;
    break;
case 2:
    // Always be positive.
    operation = "*";
    result = num1*num2;
    break;
case 3:
    // Always be positive.
    operation = "/";
    result = num1/num2;
    break;
}

答案 1 :(得分:0)

您可以做的最简单的解决方法是让随机操作完成。我假设你做了{add,sub,mult,divide}的多个循环。如果 final 结果为负数,请将其转换回正数。

但是,可以使用java运行时完成更分散的随机数生成:

double d = java.lang.Math.random() * MAX_RANDOM_VALUE;  // MAX_RANDOM_VALUE is a max value you define, like 100000
int result = (int)d;

答案 2 :(得分:0)

您还没有提及有关所需输出分配的任何内容,但如果它确实没有确定您没有负输出那么简单,您可以在返回之前通过Math.abs()传递每个输出...

答案 3 :(得分:0)

据我所知,你想从 中选择一组正整数,这些正整数可以写成+ b,其中a和b是整数。 1和a + b的最大值之间的每个正整数都可以这样写,你只想选择一个随机正整数。

int result = new Random().nextInt(maxPossibleSumValue);

答案 4 :(得分:0)

由于生成的随机数将在0-1范围内。只有当您减去两个数字并且number2大于number1时,才会得到否定结果。在这种情况下,如果number1大于number2,您只需交换number2number1