Pular para o conteúdo

Algoritmo 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! ;)
Osama Jr. /bin/laden
Hits: 7.634 Categoria: Shell Script Subcategoria: Variáveis
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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! ;)
Download fisher-yates-shuffle Enviar nova versão

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 $@

Espaço em disco!

Utilitário para redes

Script para embutir legenda.

Insere Block Squid

Remover espaços em branco em nomes de arquivos

#1 Comentário enviado por vitinho217 em 11/08/2014 - 16:06h
Não deveria ser -> let "k = RANDOM % n"

Contribuir com comentário

Entre na sua conta para comentar.