Ir para conteúdo


Foto
- - - - -

Random modificado para não repetições

Random

  • Por favor, faça o login para responder
9 respostas neste tópico

#1 Manimal

Manimal

    Membro Nível 3

  • Administradores (Adm)
  • PipPipPipPip
  • 358 posts
  • LocationVideira/SC

Postado 31 dezembro 2015 - 11:35

Olá pessoal.

 

Tenho visto alguns exemplos de uso da função Random aqui no fórum, alguma explicações também, porém elas não se enquadram no que eu precisava, assim...

 

Naturalmente quando escolhemos a função RANDOM queremos números aleatórios e a repetição dos números é esperada e em alguns casos até desejada.

 

Como no exemplo do Random aplicada a jogos de azar (exemplo dos dados), afinal a própria definição do Random prevê a aleatoriedade e consequentemente a repetição de números, certo?

 

Como no exemplo abaixo, se executarmos o programa várias vezes, vamos verificar que os números se repetem com facilidade. Claro que para fins de exemplo estamos utilizando uma faixa pequena de números, exatamente para facilitar a visualização.

 

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

Porém, em outros casos a repetição não é bem-vinda, exceto quando esgota as possibilidades. O melhor exemplo é o de uma lista de músicas (playlist) onde temos várias músicas a serem tocadas de preferência aleatoriamente, porém utilizando o Random padrão o resultado é o seguinte:

 

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

Se executarmos código acima, novamente verificamos que a sequência de músicas não é a mais correta, ficando algumas músicas tocando mais de uma vez e algumas nem serem tocadas. Não foi por este motivo, mas precisei de uma função Random sem repetição e desenvolvi a função RND com este fundamento:

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

Espero que possa ser útil.



#2 Fábio iGames

Fábio iGames

    AutoIt MVP

  • AutoIt MVPs (MVP)
  • PipPip
  • 182 posts

Postado 31 dezembro 2015 - 12:52

@

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

 muito bom esse random sem repetições , interessante para ser aplicado num software de Música.

Grato e espero desenvolver algo útil para ser compartilhado aqui também.



#3 Belini

Belini

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 2.227 posts
  • LocationMinas Gerais

Postado 31 dezembro 2015 - 03:44

Aqui deu erro de Array na linha 24 Local Static $Universo[^ ERROR



#4 Manimal

Manimal

    Membro Nível 3

  • Administradores (Adm)
  • PipPipPipPip
  • 358 posts
  • LocationVideira/SC

Postado 01 janeiro 2016 - 08:43

@Belini - Estranho... Testei exaustivamente antes de enviar para o fórum.

Para fins de acompanhamento, estou usando a versão v3.3.14.2.

Mais alguém teve problemas com a função? Poderia verificar por favor?

Obrigado.



#5 mutleey

mutleey

    AutoIt MVP

  • AutoIt MVPs (MVP)
  • PipPipPip
  • 294 posts

Postado 01 janeiro 2016 - 10:38

aqui rodou perfeito... autoit v3.3.14.2



#6 Belini

Belini

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 2.227 posts
  • LocationMinas Gerais

Postado 02 janeiro 2016 - 07:11

Nesta versão aqui também rodou perfeito, o problema está dando na versão 3.3.9.4

 

 

(24) : ==> Array variable subscript badly formatted.:
Local Static $Universo[0], $SMinimo = $Minimo, $SMaximo = $Maximo
Local Static $Universo[^ ERROR


Editado por Belini, 02 janeiro 2016 - 07:12 .


#7 Manimal

Manimal

    Membro Nível 3

  • Administradores (Adm)
  • PipPipPipPip
  • 358 posts
  • LocationVideira/SC

Postado 02 janeiro 2016 - 09:29

Legal. Se não me engano a definição de Arrays com tamanho ZERO, só foi possível na versão 3.3.12 (Acho...)

Lembro da mudança (mas não da versão), pois aproveitei para adequar minhas funções para essa aguardada evolução, pois eu venho de uma linguagem que isso era padrão.

Obrigado aos que testaram.



#8 Belini

Belini

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 2.227 posts
  • LocationMinas Gerais

Postado 02 janeiro 2016 - 12:06

Fiz uma outra versão da randon no repeat também!
 

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido


Editado por Belini, 02 janeiro 2016 - 02:54 .


#9 Manimal

Manimal

    Membro Nível 3

  • Administradores (Adm)
  • PipPipPipPip
  • 358 posts
  • LocationVideira/SC

Postado 03 janeiro 2016 - 07:35

Show de bola!  :lol:



#10 antony-ag

antony-ag

    Membro Nível 3

  • Membros
  • PipPipPipPip
  • 391 posts
  • LocationPraia Grande/SP

Postado 04 janeiro 2016 - 06:58

$Universo[0] Não pode não ter um tamanho de dimensão definido. Por isso do erro. Dizer "0" para o tamanho do array seria o mesmo que dizer que vc vai declarar uma variável mas no final das contas essa variável não vai existir... rs... Limitação da versão, creio eu.

Editado por antony-ag, 04 janeiro 2016 - 06:59 .





0 usuário(s) está(ão) lendo este tópico

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Documentação OnLine de referência