我正在尝试为我的儿子创建一个简单的数学游戏。我有额外的操作工作完美。我的问题是减法。我使用与我的加法操作相同的代码,问题是有时第二个数字大于第一个数字导致负数。我需要帮助纠正随机数的顺序,因此第一个数字大于或等于第二个数字。请帮忙。
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)
答案 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个生成的随机数,然后再将它们分配给a
和b
:
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
。