Originariamente inviato da fcaldera
io suggerirei questo percorso:

- definisci il tuo array di frasi (1,2,3,4..., 15)
- lo scombini (shuffle) (6,11,4,14,7...)
- lo leggi nel nuovo ordine in sequenza

al termine puoi decidere se ripartire nell'ordine scombinato oppure fare un nuovo shuffle

copia e incolla

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>xhtml 1.0</title>

        <script type="text/javascript">
        // <![CDATA[

        var randomQuotes = function(id) {
        
            /* Fabrizio Calderan - 2009.06.23. */

            var
            _q        = [
                'frase 1',
                'frase 2',
                'frase 3',
                'frase 4',
                'frase 5'
            ],
            _current  = 0,
            _last     = _q.length,
            _element  = document.getElementById(id),

            _sort    = function() { return Math.round(Math.random()) },
            _shuffle = function() {
                _q.sort(_sort);

                // Riporta il nuovo ordine shuffle nella console firebug (se presente)
                if (typeof(console) === 'object') console.log(_q);
            };


            return {
                rotate    : function(o) {
                    _shuffle();

                    (function() {
                        _element.innerHTML = _q[_current++];
                        if (_current === _last) {
                            _current = 0;
                            if (o.reshuffle) _shuffle();
                        };
                        setTimeout(arguments.callee, o.pause);
                    })();
                }
            }
        };

        onload = function() {
            randomQuotes('citation').rotate({
                'pause'     : 2000, // millisecondi di attesa tra una citazione e la seguente
                'reshuffle' : true  // cambia o meno l'ordine ad ogni sequenza completata
            });
        }

        // ]]>
        </script>

    </head>

<body>

    <h1>Citazioni random</h1>

    <q style="font-size: 32px"><cite id="citation"></cite></q>

</body>
</html>

Edit:
- la funzione randomQuotes accetta come argomento l'id dell'elemento in cui si devono scrivere le citazioni.
- il metodo rotate accetta un invece oggetto in cui definire 'pause' e 'reshuffle'. Impostando a true quest'ultima chiave, ad ogni ciclo completato, l'ordine dell'array stesso viene nuovamente cambiato (se hai la firebug installata puoi vederne il comportamento nella console).



Keywords: ripetere rotazione citazioni aforismi frasi random ordine ordinamento caso casuali casuale senza ripetizioni