减法运算有2个随机数

时间:2017-10-25 01:54:50

标签: java

我正在尝试为我的儿子创建一个简单的数学游戏。我有额外的操作工作完美。我的问题是减法。我使用与我的加法操作相同的代码,问题是有时第二个数字大于第一个数字导致负数。我需要帮助纠正随机数的顺序,因此第一个数字大于或等于第二个数字。请帮忙。

data2 = {'A': [1, 2, 3, 4], 
        'B': ['20171018', '', '', ''], 
        'C': ['20171019', '20171005', '', ''],
        'D': ['20171001', '20171006', '20171019', ''],
        'E': ['20171002', '20171003', '20171020', '20171021'],
        'F': ['id_123','id_234','id_345','id_456'],
        'G': ['','','','']
        }
df3 = pd.DataFrame(data2)

4 个答案:

答案 0 :(得分:2)

只需使用不等式运算符来比较它们的值,而不是从较大的值中减去:

#include <stdio.h>  
#include <stdlib.h>
#include <string.h>
#include <omp.h>

void print_board(int* board, int board_size)
{
    for (int i =0; i<board_size; i++)
    {
        for (int j =0; j<board_size; j++)
        {
            printf("%2d ", board[i*board_size+j]);
        }
        printf("\n");
    }
}

int main(int argc, char *argv[])
{

    int size = 8;

    int *board = malloc(sizeof(int)*size*size);
    memset(board, 0, size*size);

    print_board(board, size);

    #pragma omp parallel 
    {
        printf("Hello world from %d of %d\n", omp_get_thread_num(), omp_get_num_threads());
    }

    return 0;
}

如果int difference = a > b ? a - b : b - a; // ^ Inequality operator 运算符让您感到困惑,您也可以这样写:

?

您可以在Equality, Relational, and Conditional Operators页面上详细了解int difference; if(a > b) difference = a - b; else difference = b - a; ?>&&等运营商。

答案 1 :(得分:0)

通过调整随机数生成逻辑,您可以确保b永远不会超过a

int b = 1 + (int) (Math.random() * a);

这可能比交换数字更好,因为交换会将a倾斜到高端(接近SIDES),这可能不是你想要的。

答案 2 :(得分:0)

由于你只是减去两个数字,你可以简单地使用if(a&gt; = b)然后a - b b - a来控制顺序。

如果问题中有更多数字,您可以随时将所有随机数放入数组中,然后在生成问题之前对它们进行排序。

答案 3 :(得分:0)

有很多方法,但为了不弄乱您的代码,一个简单的解决方法是检查2个生成的随机数,然后再将它们分配给ab

int r1 = (int) Math.random()*SIDES;
int r2 = (int) Math.random()*SIDES;

int a = Math.max(r1, r2);
int b = Math.min(r1, r2);

这样,a将始终大于或等于b