Pagina 1 di 1

Numeri random con /dev/random

Inviato: giovedì 7 giugno 2007, 22:31
da Bandiera_Tricolore
Come faccio da bash ad avere numeri random compresi da 1 a 90 usando /dev/random? No vi devo spiegare per cosa devo usarli vero?  ;D  :-[

Re: Numeri random con /dev/random

Inviato: giovedì 7 giugno 2007, 22:43
da bite
echo $((1+$RANDOM%90))
Verifica se ad ogni accensione il risultato è diverso

Vediamo, a che potrebbe servirti... a regalare dei soldi allo Stato?

Re: Numeri random con /dev/random

Inviato: giovedì 7 giugno 2007, 23:22
da Bandiera_Tricolore
finchè regaliamo €1 a settimana allo Stato sono pure contento.... l'importante e non regalarne 150 e più ogni due anni a Bill Gates

Re: Numeri random con /dev/random

Inviato: giovedì 7 giugno 2007, 23:42
da bite
Comunque mi dicono che la smorfia funziona meglio.

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 0:18
da Bandiera_Tricolore
bite ha scritto: Comunque mi dicono che la smorfia funziona meglio.
eh?

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 0:29
da bite

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 10:35
da Bandiera_Tricolore
prendi in giro, prendi....

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 11:23
da bite
;D

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 15:28
da Uno
bite ha scritto: echo $((1+$RANDOM%90))
Verifica se ad ogni accensione il risultato è diverso

Vediamo, a che potrebbe servirti... a regalare dei soldi allo Stato?
Sembra che ricavare numeri pseudo-casuali tra 0 e N usando una funzione casuale rand come dici sia sbagliato :-\

http://www.hwupgrade.it/forum/archive/i ... 96677.html

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 15:47
da bite
Uno ha scritto: Sembra che ricavare numeri pseudo-casuali tra 0 e N usando una funzione casuale rand come dici sia sbagliato :-\

http://www.hwupgrade.it/forum/archive/i ... 96677.html
Ti riferisci a questo?
Il modo "brutale" per ottenere un numero pseudorandom tra 0 ed N-1 è ovviamente:
val = rand() % N;
Questo metodo viene dato per buono in alcuni manuali, ma contiene almeno due errori concettuali.
Anzitutto, non è detto che la distribuzione di val sia uniforme. Infatti lo standard garantisce che il valore restituito da rand sia uniformemente distribuito tra 0 e RAND_MAX inclusi: ne segue che, se N non è un divisore di RAND_MAX+1, allora la probabilità che val sia 0 è maggiore della probabilità che val sia N-1. (Di quanto, dipende dai valori di N e RAND_MAX.)
Il secondo, e più serio, è che val viene generata usando le cifre meno significative di rand. Ora, se k divide m, allora calcolare la classe resto modulo k della classe resto modulo m di un numero intero qualsiasi, è lo stesso che calcolare direttamente la classe resto modulo k: questo perché, quando si tolgono i multipli di m, si toglie già una parte dei multipli di k. Ne segue che, se rand è congruenziale lineare --- e non si può escludere che lo sia --- di moltiplicatore a, incremento b, e modulo m, e N divide m, allora rand() % N è congruenziale lineare di moltiplicatore a mod N, incremento b mod N, e modulo N: in particolare, il periodo di rand() % N non può superare N.
Il modo per evitare questo secondo inconveniente, è usare sempre tutte le cifre significative di rand: il modo più immediato per farlo, è trasformare il valore fornito da rand in un numero in virgola mobile in doppia precisione, uniformemente distribuito fra 0 incluso e 1 escluso:
double frand(void)
{
return rand() / (RAND_MAX+1.0);
}
Vero, ma:
1) scrivilo tu uno script bash (ti concedo anche 10 righe) che ne tenga conto
2) forse per generare i numeri del lotto è sufficiente (in alternativa c'è sempre la suddetta smorfia).
Come si può vedere, i valori 4 e 9 si possono ottenere in 3276 casi, contro i 3277 che determinano l'uscita di ciascuno degli altri numeri: di conseguenza, le probabilità di uscita di 4 e 9 sono 3276/32768 1/10. Potrebbe essere una tolleranza accettabile; ma potrebbe anche non esserlo.

Re: Numeri random con /dev/random

Inviato: venerdì 8 giugno 2007, 18:06
da thelo
puoi prendere questi accorgimenti quando programmi protocolli di rete...
ma per la maggioooooooooor parte delle cose te ne puoi altamente fregare

(b2b)