allan Posted October 13, 2012 at 05:20 AM Report #478951 Posted October 13, 2012 at 05:20 AM Fiz este código: #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { char pais[4][10] = {"Brasil","Paraguai","Argentina"}; int a; srand(time(NULL)); a = rand()%3; cout << pais[a] << endl; return 0; } Eu quero sortear aleatoriamente, mas ele vai por ordem e repete várias vezes a mesma palavra. Ele começa por exemplo pela Argentina, depois vai para o Brasil, depois Paraguai e então repete tudo de novo a mesma sequência.
HappyHippyHippo Posted October 13, 2012 at 08:59 AM Report #478956 Posted October 13, 2012 at 08:59 AM (edited) quantos testes fizeste ? lembra-te que quando a amostra é pequena, este tipo de coisas é facil de acontecer Edited October 13, 2012 at 09:00 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted October 13, 2012 at 09:06 AM Report #478957 Posted October 13, 2012 at 09:06 AM O rand() também "funciona mal" com mais países? Já ouvi dizer que algumas implementações de rand() são pouco aleatórias nos primeiros bits. Talvez seja o caso da tua. Experimenta usar bits mais significativos a = (rand() >> 11) % 3; What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
allan Posted October 13, 2012 at 07:29 PM Author Report #479012 Posted October 13, 2012 at 07:29 PM Então pmg eu testei esse teu código mas tive que colocar 1 no lugar do 11. Agora está um pouco mais aleatório.
pmg Posted October 13, 2012 at 08:32 PM Report #479028 Posted October 13, 2012 at 08:32 PM (edited) Então pmg eu testei esse teu código mas tive que colocar 1 no lugar do 11. Agora está um pouco mais aleatório. Diz qual é o teu sistema operativo e compilador. Compila e corre este programa e posta aqui também o resultado. #include <stdio.h> #include <stdlib.h> int main(void) { printf("RAND_MAX is %d.\n", RAND_MAX); return 0; } Thanks Edit: não reparei que estava no quadro de C++. O programa acima para averiguar o RAND_MAX é linguagem C, mas podes escrever um correspondente em C++, se preferires. Edited October 13, 2012 at 08:41 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
allan Posted October 13, 2012 at 10:23 PM Author Report #479043 Posted October 13, 2012 at 10:23 PM Sistema é o Windows 7 e o compilador MingW. O resultado desse código é 32767
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now