Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Numeri random senza ripetizioni

    Ciao a tutti,
    vi pongo subito il mio problema:
    io devo generare una funzione che generi una serie di numeri random che non si ripetano mai, ma non riesco a trovare una soluzione corretta.
    Ringrazio già da adesso colui/oro che mi aiuteranno a risolvere questo problema.

  2. #2

    re

    Ciao,

    anche noi abbiamo dovuto invertarci un metodo un pò macchinoso e sicuramente non ortodosso per risolvere il problema:

    Abbiamo pensato di realizzare una serie (array "ncaso") di numeri random partendo da un numero casuale ed aumentando la serie con un altro valore casuale.
    Quando la serie supera il numero max (ad esempio vuoi 31 numeri casuali) sottrai l'ultimo numero generato al numero max (nell'esempio sarà 31) e riparti di lì a sommare.
    Nel nostro caso 31 è un numero primo quindi non avevamo problemi di loop (serie numeri 1,4,7,4,7,4,7,ecc fino a 31)
    Se dovessi avere problemi di quel tipo fai un controllo che il numero generato non sia già presente nell'array e se c'è incrementi di 1.

    Questo il codice AS

    // Genero il primo numero casuale
    var casostart:Number = random(numeroimm)+1;
    var caso:Number = casostart
    // Incremento la serie con un numero casuale
    var serie:Number = random(18)+3;
    // Popolo l'Array con 30 numeri non ripetitivi
    for (i=1; i<numeroimm; i++) {
    if ((caso+serie)>=numeroimm) {
    var numero:Number = caso+serie-numeroimm;
    caso = numero;
    ncaso[i]=caso;
    } else {
    var numero:Number = caso+serie;
    caso = caso+serie;
    ncaso[i]=caso;
    }
    }

    Spero possa esserti utile!

    il codice lo abbiamo utilizzato per posizionare 30 icone in maniera random (vd: www.openbuildingresearch.com)
    Think-Tank WebAgency

    www.t-t-t.it
    info@t-t-t.it

  3. #3
    Ti ringrazio per l'aiuto thinktank,
    solo che forse la cosa potrebbe essere più semplice,
    ti spiego, quello che faccio io:
    genero 4 numeri random da 1 a 5 la cui somma dia 15 e questo mi da il numero di carte per livello.
    per ogni livello devo generare n carte date dal numero di carte per livello su un totale di 11 carte.
    Esempio pratico:

    lv1: 3 carte di lv1
    lv2: 4 carte di lv2
    lv3: 5 carte di lv3
    lv4: 3 carte di lv4

    ora quello che io dvo ottenere è far si che su 11 carte ne escano 3 per il primo, 4 per il secondo ect.. ma che non siano uguali tra di loro per evitare carte doppie.

    Sarà che su actionscript ci ho messo le mani a poco ma da quel che ho letto forse si può fare in un modo un po' più semplice ^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.