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?
![]()
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?
![]()
K è un numero intero compreso fra 0 e 98.codice:k = Math.round(Math.random()*98)
K è un numero non intero compreso fra 0 e 98. La precisione decimale può raggiungere le 15 cifre.codice:k = Math.random()*98
Ciao,.
Questo lo so, ma se tu fai
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%codice:onClipEvent(enterFrame){ trace(Math.ceil(Math.random()*98)); }
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
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 postOriginariamente 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
![]()
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![]()
ok grazie mille ora controllo![]()
Scusa, andavo di fretta e non avevo capito molto bene la domanda![]()
![]()
![]()
G.