произвольно увеличивать массив, c ++ - PullRequest
0 голосов
/ 01 марта 2019

Я изо всех сил пытаюсь понять концепцию случайного чтения чисел из массива целых чисел, используя 'rand ()'.Я создал генератор случайных чисел между 1-3 и хочу вывести индекс массива, а затем для генератора случайным образом вывести следующее сгенерированное число из предыдущего индекса, пока оно не достигнет конца массива.Например:

  1. 'rand ()' = 3, array [2] '

  2. ' rand () '= 2,'array [4] '

  3. ' rand () '= 3,' array [7] '

, если это имеет смысл ??и т. д. и т. д.

Код, который я сейчас использую, просто выводит последовательность случайных чисел.У меня есть «семя», чтобы я мог посмотреть на ту же последовательность.

int main() 
{ 
 int arrayTest[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
 17, 18, 19, 20};   
 srand(4);
 for(int i = 0; i < 20; i++)  
    {  
     arrayTest[i] = (rand() % 3);
     cout << arrayTest[i] << endl;
    }




}

1 Ответ

0 голосов
/ 01 марта 2019

Я немного догадываюсь о том, что вы действительно хотите.Но, похоже, он хочет сделать случайные приращения к индексу и использовать этот индекс для чтения из массива в цикле.

Так что этот код просто не делает ничего, как вы хотите

 arrayTest[i] = (rand() % 3);

Он записывает (не читает) случайное значение в массив, используя последовательный (т.е. не случайный) индекс.

Вот что я думаю Вы хотите

int main() 
{ 
    int arrayTest[20] = { ... };   
    srand(4);
    int index = -1;
    for(int i = 0; i < 20; i++)  
    {  
         index += (rand() % 3) + 1; // add random number from 1 to 3 to index
         if (index >= 20) // if index too big for array
             index -= 20; // wrap around to beginning of array
         cout << arrayTest[index] << endl; // read array at random index, and output
    }
}

Но я не совсем уверен, в частности, то, как ваш testArray имеет номера от 1 до 20 в порядке, делает меня немного подозрительным.Может быть, если вы объясните, почему вы хотите делать то, что вы хотите, было бы немного яснее.

...