【发布时间】:2019-05-06 01:40:45
【问题描述】:
我应该创建一个接受整数数组作为输入的函数,然后将数组中的每个值随机修改为 -38 或 55,具体来说。但是,我不确定如何随机选择一个数字是减-38还是加55,以及如何进行此过程。
我尝试在我的函数中创建一个 if 语句,说明如果一个函数是偶数 (array[i] % 2),则减去 -38,如果数字是奇数(else 语句),则加 55。虽然这可能有效,但这不是回答这个问题的正确方法,因为如果我想将偶数加 55 怎么办?反之亦然,奇数减去 38?
#include <iostream>
using namespace std;
#include <time.h>
#include <cstdlib>
int output(int array[]){
for(int i = 0; i<5; i++){
cout << array[i] << " ";
}
}
int offset(int array[]){
for (int j = 0; j < 5; j++) {
int myrand = rand();
if (myrand % 2 == 0){
array[j] = array[j] - 38;
}
else{
array[j] = array[j] + 55;
}
}
}
int main()
{
srand(time(NULL));
int array[5] = {1, 2, 3, 4, 5};
cout << "Original: ";
output(array);
offset(array);
return 0;
}
如果数组中的值是 5,它应该有可能是 10 或 0,等等任何数字。
【问题讨论】:
-
你知道如何随机做任何事情吗?你知道如何生成随机数或随机布尔值吗?
-
好吧,如果元素是偶数减去 38 或奇数,加上 55 几乎不是随机的。 (除非数组的元素是随机的)。虽然还不错,但您也可以生成一个随机数、存储它、迭代位并根据 1/0 进行偶数/奇数运算。 (这减少了对
rand的重复调用)。有很多可能性。尝试几个,看看你是否找到一个相当有效并产生合理分布的。 -
@Beta 我知道如何使用rand函数,但只知道如何在特定范围内随机生成一个数字,比如做rand() % 100,会产生0-之间的随机数99.不过,我不确定如何将其与这个问题联系起来。
-
@DavidC.Rankin 我才刚刚开始学习数组,所以我不知道如何迭代机器人并根据我的代码中的位做偶数/奇数。尽管可能有很多方法可以解决这个问题,但我仍然对如何解决这个问题感到困惑。
-
好的,这给了我们一些可以射击的东西。您必须知道数组中的元素数量才能开始。只要您只有 5 个元素,您的
for循环就可以了。在循环中,在其基本形式中,您可以执行for (int j = 0; j < 5; j++) { int myrand = rand(); if (myrand % 2 == 0) array[j] = array[j] - 38; else array[j] = array[j] + 55; }您可以使用-=和+=作为速记,例如array[j] -= 38;等...试一试,如果您仍然卡住,请告诉我们。