Ir ao conteúdo

Como funciona random


nosptter

Posts recomendados

Postado

Eu faço uma lista e peço para computador escolher um item nela ou em um CD de audio eu peço para o som escolher uma faixa ambos caso aleatórios. Como funciona esse metodo? Ele funciona realmente ao acaso ou é possível um programador prever qual será o item escolhido?

Acredito que tirando a quantica como um todo todo resto pode ser explicado com a lógica. O computador funciona atraves de algoritimos que se obrigam a não ser "duas via" (ambiguno) isso é, preciso explicitar praticamente o que deve ser feito. Se eu mandar um computador ir reto e dobrar (partindo da ideia que ele entenda isso) quando chegar na hora de dobrar ele dará problema, pois ele deverá virar pra esquerda ou pra direita? Como computador não pensa ele não saberá o que fazer.

No caso do random eu não consegui entender como funciona a lógica. Como o computador lê as opções e escolhe aleatoriamente uma delas?

Postado

Todas as arquiteturas modernas de computador que a gente usa em casa possuem um relógio interno. Se você abrir o seu agora e procurar bem na placa mãe, vai ver um chip com uma pilha (aquelas redondas, como de relógio). Aquilo lá é a memória CMOS da bios, que além de diversas outras coisas, fica contando os ciclos do computador, mais ou menos como um relógio mesmo.

É usando esse relógio/contador do computador, que a maioria das linguagens de programação implementam os geradores de números aleatórios delas.

Esses geradores funcionam com uma SEED e uma Função. A seed (semente), como eu falei, é o próprio tempo gerado pelo computador. E a função varia de implementação pra implementação, mas é qualquer uma que consiga pegar o tempo do computador e transformar aquilo num número qualquer.

Como o tempo é uma coisa que está sempre mudando, consequentemente os números retornados por essa função sempre serão diferentes também.

No entanto, se você clicar agora no random do seu player mp3, e depois de alguma forma você pudesse atrasar o relógio do computador e clicar novamente no random no exato milisegundo da outra vez, você acabaria ouvindo a mesma música. A função receberia o mesmo seed e retornaria o mesmo número aleatório.

É por isso que os números aleatórios gerados pelo computador são chamados na verdade de Pseudo-Random.

(Ótima pergunta, aliás)

  • 4 semanas depois...
Postado

A explicação do colega Dontpanic foi excelente.

Só gostaria de acrescentar uma coisa: É possível escolher pelos dois métodos: números aleatórios aleatórios e os aleatórios previsíveis.

Os compiladores permitem que você opte por uma sequência pré-definida de números "aleatórios". Ou seja é uma lista interna do compilador com números que só ele sabe, porém são sempre os mesmos. A utilidade é que o programador pode saber o que ocorre no programa quando ele muda o código-fonte.

Há os números aleatórios que são, na prática, imprevisíveis, pelo motivo explicado acima.

Geralmente para que os valores sejam realmente aleatórios, deve-se usar um comando no início do programa.

no VB6: Randomize

no Delphi:Random, se não me engano

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!