Algoritmo Fisher-Yates shuffle

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

[ Hits: 7.430 ]

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

Configurando interfaces de rede

Script para baixa videos do YOUTUBE

Alterando imagem do Grub no Ubuntu 10.04

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

Renomear Arquivos


  

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