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

    Generazione numeri casuali

    Devo generare un numero compreso tra 0 e 98, ma la maggior parte delle volte non mi genera un numero univoco, c'è un modo per farlo generare almeno al 90% univoco?

  2. #2
    codice:
    k = Math.round(Math.random()*98)
    K è un numero intero compreso fra 0 e 98.


    codice:
    k = Math.random()*98
    K è un numero non intero compreso fra 0 e 98. La precisione decimale può raggiungere le 15 cifre.

    Ciao, .

  3. #3
    Questo lo so, ma se tu fai
    codice:
    onClipEvent(enterFrame){
    trace(Math.ceil(Math.random()*98));
    }
    ti accorgi che troppo spesso viene generato il numero più volte, io invece vorrei che il numero venisse generato univoco almeo al 90%, con questo metodo o con il tuo non cambia, io volevo sapere se ci fosse un escamotage abbastanza veloco per far generare il numero univocamente al 90%

  4. #4
    E' proprio un problema del random in se (e pare non sia solo di flash )
    Una soluzione molto semplice, che però non è detto che vada sempre bene, è controllare se il numero generato è uguale a quello prima, nel qual caso generarne uno nuovo, una cosa tipo

    _root.onEnterFrame = function(){
    oldnum = k
    k = Math.ceil(Math.random()*98)
    if(k!=oldnum){
    // azioni...
    }
    }

    In questo modo le // azioni non sono eseguite se il numero generato è uguale al precedente, capirai però che in alcuni casi questo può non andar bene, anche perchè praticamente crea un "buco" nell'esecuzione, quindi in molti casi non è l'ideale

    Esistono delle prototype che dovrebbero essere più "casuali" del random incluso in flash, ad esempio c'è questa di andr3a http://www.sephiroth.it/proto_detail.php?id=131

  5. #5
    Infatti, io avevo pensato ad inserire nell'array i numeri generati, poi prima di far eseguire le operazioni controllavo se il nuovo numero generato si trovava nell'array, ma l'ho subito scartata, non era efficace, e dovevo scrivere troppo codice. Comunque grazie, mi terrò questo


  6. #6
    Originariamente inviato da jeck
    Infatti, io avevo pensato ad inserire nell'array i numeri generati, poi prima di far eseguire le operazioni controllavo se il nuovo numero generato si trovava nell'array, ma l'ho subito scartata, non era efficace, e dovevo scrivere troppo codice. Comunque grazie, mi terrò questo

    Vedi sopra, ho editato il post

    Se cerchi anche nei gruppi di google anche su altri linguaggi si pone lo stesso problema, e vengono proposte alcune funzioni e consigli per aumentare la "casualità", magari puoi provare ad adattarne qualcuna in flash

    Altra che potresti provare è questa http://www.sephiroth.it/proto_detail.php?id=134 , ti popola un array con tutti i numeri diversi, quindi tu in pratica hai la certezza che gli elementi dell'array sono casuali e diversi tra loro, per cui dopo invece di fare un random ti basterebbe selezionare un numero dall'array...può essere una soluzione alternativa

  7. #7
    ok grazie mille ora controllo

  8. #8
    Scusa, andavo di fretta e non avevo capito molto bene la domanda
    G.

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.