Выберите случайный элемент из массива в C++

Я хочу случайным образом выбрать от 1 до 50 покемонов, но rand выбирает только 42-го из массива (Dragonite). Как я могу сделать это случайным?

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

int main(){

    char sorteio1[50][11] = {"Bulbasaur","Venusaur","Charmander","Charmeleon","Charizard","Pidgey","Pidgeotto","Pidgeot","Pikachu","Raichu","Clefairy","Vulpix","Ninetales","Meowth","Psyduck","Golduck","Mankey","Primeape","Growlithe","Arcanine","Abra","Kadabra","Alakazam","Magnemite","Magneton","Onix","Cubone","Marowak","Staryu","Starmie","MrMime","Jynx","Magikarp","Gyarados","Lapras","Ditto","Eevee","Vaporeon","Porygon","Snorlax","Dragonair","Dragonite","Mewtwo","Mew","Chikorita","Sentret","Furret","Hoothoot","Lanturn","Pichu"};
    int i;

    i = rand() %50;

    printf ("%s\n",sorteio1[i]);    

    system ("Pause");
    return 0;
}

person Camila Oliveira    schedule 21.09.2018    source источник
comment
Этот сайт на английском языке, возможно, вы хотите использовать Stack Overflow на португальском языке?   -  person Some programmer dude    schedule 21.09.2018
comment
Я не могу сказать, испанский это или португальский. Вы можете опубликовать это на странице es.stackoverflow.com или pt.stackoverflow.com.   -  person R Sahu    schedule 21.09.2018


Ответы (1)


Вы должны заполнить свое случайное число — вы можете использовать текущее время, чтобы дать вам разные входные данные.

Ознакомьтесь с документацией по srand.

Пример из документации:

/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

int main ()
{
  printf ("First number: %d\n", rand()%100);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100);

  return 0;
}
person Leonardo Alves Machado    schedule 21.09.2018
comment
Это единственный способ сделать это правильно? Я не знаю, разрешат ли мне использовать time.h - person Camila Oliveira; 21.09.2018
comment
Время используется только для того, чтобы получить семена, которые постоянно меняются. Если вы найдете другой способ создания начального числа, которое отличается каждый раз при запуске программы, вы можете заменить этот вызов (возможно, попросив пользователя ввести число для начального числа)... - person Leonardo Alves Machado; 21.09.2018
comment
Кстати, этот сайт на английском языке - я отредактировал ваш вопрос, чтобы он был здесь по теме. Вы должны принять его, прежде чем вы получите слишком много отрицательных голосов или он будет закрыт. - person Leonardo Alves Machado; 21.09.2018
comment
@LeonardoAlvesMachado Пожалуйста, отметьте / проголосуйте, чтобы закрыть очевидные обманы. Этот вопрос задавался много раз. - person NathanOliver; 21.09.2018