zsh: Sattolo's Random Cyclic Permutation

Publicado por Sandro Marcell (última atualização em 14/04/2010)

[ Hits: 4.933 ]

Homepage: http://sanmarcell.wordpress.com

Download sattolo_zsh




Simples função que implementa uma variante do algoritmo Fisher-Yates shuffle. Esta implementação foi descrita pela pesquisadora italiana Sandra Sattolo.

  



Esconder código-fonte

#
# Sattolo's Random Cyclic Permutation
# -- Variante do algoritmo Fisher-Yates shuffle
# Sandro Marcell <sandro_marcell@yahoo.com.br>
# Boa Vista, Roraima - 21/03/2010
#
function sattoloCycle {
   zmodload zsh/mathfunc
   (( rand48(seed) ))

   typeset -a array swap
   integer n k

   array=(${*=})
   (( n = ${(w)#array} + 1 ))

   while ((n > 1))
   do
      ((--n))
      (( k = int((n - 1) * rand48()) + 1 ))
      swap+=$array[k]
      array[k]=$array[n]
      array[n]=$swap
   done

   return 0
}

Scripts recomendados

Exibir configurações de rede

Projeto Mg-Renders

Criando Autoridades Certificadoras e Certificados de Testes no Linux

olhaMeuDesktop 0.1 - Aplicativo para gravar Área de Trabalho

Dê utilidade aquelas teclas que não servem pra nada do seu teclado


  

Comentários
[1] Comentário enviado por /bin/laden em 26/04/2010 - 17:48h

Mutcho Loko...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts