Algoritmo Fisher-Yates shuffle

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

[ Hits: 7.514 ]

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

Converter animes em .mp4 para .avi (e outros) com qualidade perfeita

Exportar ip para variável

Insere Block Squid

Controle de banda individual com shaper

Trocando MAC address de placa de rede


  

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