Algoritmo Fisher-Yates shuffle

Publicado por Osama Jr. (última atualização em 31/08/2009)

[ Hits: 7.617 ]

Homepage: Não tenho

Download fisher-yates-shuffle




Uma versão em shell script do algoritmo Fisher-Yates shuffle (também conhecido como Knuth-Shuffle). Essa versão não é lá muito eficiente devido às limitações da variável $RANDOM.

Mais detalhes: http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

P.S.: Obrigado SMarcell pelas dicas! ;)

  



Esconder código-fonte

#!/bin/bash
#
# "Implementação" em Shell Script do algoritmo Fisher-Yates shuffle.
# Autor: /bin/laden - 24/08/2009.
#
# Uso: fisher-yates-shuffle <valores>
# Ex.: ./fisher-yates-shuffle 0 1 2 3 4 5 6 7 8 9
#
# Mais detalhes: <man bash> ou <www.google.com> =P
#
# Obs.: Implementação pouco eficiente devido a limitação
# da variável RANDOM.

function fisher-yates-shuffle {
   RANDOM=$$
   declare -a array=($@)
   declare -i k n=${#array[@]}

   while [ $n -ge 0 ]
   do
      let "k = RANDOM % (n + 1)"
      swap+=(${array[$k]})
      array[k]=${array[$n]}
      array[n]=$swap
      let "n--"
   done

   echo "${swap[@]}" && return 0
}

fisher-yates-shuffle $@

Scripts recomendados

Gerador de senhas personalizadas

Estatísticas de tráfego de rede

Incluindo lista de IP's nos arquivos de bloqueio do Squid automaticamente

addcbq

script de compilação do kernel 2.6.38.8 com patch ck3 no ubuntu


  

Comentários
[1] Comentário enviado por vitinho217 em 11/08/2014 - 16:06h

Não deveria ser -> let "k = RANDOM % n"


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts