Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-05-2009, 11:43   #1
xsatellitex
Member
 
L'Avatar di xsatellitex
 
Iscritto dal: Dec 2007
Messaggi: 190
Generare numero casuale

Come si realizza una funzione che restituisce un numero casuale ?
Ovviamente senza utilizzare le funzioni gia belle e pronte.

Il linguaggio di programmazione non è importante, voglio solo capire il ragionamento
__________________
Cinema e Film
xsatellitex è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2009, 12:04   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Si puo' utilizzare un generatore pseudocasuale, come un LCG
http://en.wikipedia.org/wiki/Linear_...tial_generator

Oppure puoi basarti sul tempo di sistema se la risoluzione e' molto piu' alta del tuo campionamento e se il tuo campionamento non e' periodico.

Oppure buoi estrarre un UUID, praticamente presente su tutte le piattaforme di programmazione moderne (sotto le piattaforme Microsoft e' noto come GUID). Nella sua implementazione piu' comune l'algoritmo del UUID contiene una parte di cifratura di dati simile ad uno dei passi dell'LCD, e i tra i dati c'e' anche il tempo di sistema con risoluzione a 100 nanosecondi. In pratica metteresti insieme i due concetti.
Un UUID e' un numero a 16 byte. Ti bastera' calcolare il modulo di tale numero per il massimo del tuo range.
Quindi se il tuo massimo e' sensibilmente piu' basso di un numero a 16byte (e nella stragrande maggioranza dei casi e' cosi') e se il tuo campionamento non e' mai inferiore a 100ns (e nella maggioranza dei casi e' cosi'), allora questo metodo e' semplice e funzionale.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2009, 12:27   #3
xsatellitex
Member
 
L'Avatar di xsatellitex
 
Iscritto dal: Dec 2007
Messaggi: 190
Grazie penso che le combinerò tutte insieme
__________________
Cinema e Film
xsatellitex è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2009, 12:32   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Puoi anche mettere un microfono fuori dalla finestra e catturare il rumore di fondo. Non è crittogaficamente sicuro ma si riescono a tirar fuori delle belle sequenze. Il problema è che non sono ripetibili.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2009, 22:06   #5
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Se vuoi saperne di più sulla generazione di sequenze pseudo casuali ti consiglio:

Menezes, van Oorschot, Vanstone - Handbook of applied cryptography

E' un ottimo libro free online della CRC Press. Si usa a livello universitario. Comunque il principio è quello di avere una fonte di "entropia". L'entropia è un concetto che torna in molte discipline ed è puramente astratto, cioè è un modo per dire "qualcosa che non esiste". In pratica il generatore di entropia pura genera bit 0 o 1 con probabilità 0.5. Esistono aggeggi che approssimano questo comportamento, generalmente ottenuto per mezzo di strumenti hardware o x mezzo di misurazioni quali il ritmo con cui batti tasti sulla tastiera, il rumore di un microfono, ecc... Oppure combinando tutte queste cose. A questo punto hai una sequenza molto "sicura", generalmente troppo sicura per i nostri semplici scopi, quindi si usa un generatore di numeri pseudocasuali (PRNG) che prende in ingresso una sequenza di N bit detta seme e ne produce una non periodica di M bit (dove M è molto più grande di N) detta pseudocasuale. Ovviamente gli M-N bit aggiunti sono calcolati in funzione degli N bit iniziali (quelli sicuri) secondo una formula (se lineare hai un generatore lineare). Ovviamente il prodotto di un generatore pseudocasuale sarà facilmente prevedibile in quanto avendo una sequenza finita in ingresso produrrà una sequenza infinita in uscita, che sarà infinita solo perchè ad un certo punto comincerà a ripetersi. Un generatore del genere è utile per scopi non crittografici: nel caso della crittografia non si può utilizzare perchè se qualcuno "registrasse" per molto tempo la sequenza arriverebbe a determinare il seme potendone prevedere il comportamento futuro!
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 00:19   #6
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Un UUID e' un numero a 16 byte. Ti bastera' calcolare il modulo di tale numero per il massimo del tuo range.
supponiamo che un UUID sia crittograficamente sicuro; cosa ti fa pensare che lo sia anche il suo modulo N, per qualche N?
lo stesso vale per qualunque altra proprietá utile di un UUID, come la distribuzione uniforme (non so se ce l'hanno, dico per fare un esempio).
a questo punto seriamente tanto vale mettere il microfono fuori dalla finestra.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 00:49   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da fero86 Guarda i messaggi
supponiamo che un UUID sia crittograficamente sicuro; cosa ti fa pensare che lo sia anche il suo modulo N, per qualche N?
lo stesso vale per qualunque altra proprietá utile di un UUID, come la distribuzione uniforme (non so se ce l'hanno, dico per fare un esempio).
a questo punto seriamente tanto vale mettere il microfono fuori dalla finestra.
Relativamente agli UUID Microsoft, ovvero i GUID, non servono tanto per la crittografia (sono addirittura sconsigliati, quindi il presupposto sarebbe errato), quanto piu' per la loro caratteristica di univocita' che li rende utili laddove si conti di creare identificativi univoci (Database, riferimenti, etc.)

Quote:
V4 GUIDs use the later algorithm, which is a pseudo-random number. These have a "4" in the same position, for example {38a52be4-9352-453e-af97-5c3b448652f0}. More specifically, the 'data3' bit pattern would be 0001xxxxxxxxxxxx in the first case, and 0100xxxxxxxxxxxx in the second. Cryptanalysis of the WinAPI GUID generator shows that, since the sequence of V4 GUIDs is pseudo-random, given the initial state one can predict up to next 250 000 GUIDs returned by the function UuidCreate[1]. This is why GUIDs should not be used in cryptography, e. g., as random keys.
Per la natura dell'algoritmo usato quindi una sequenza di GUID e' una sequenza pseudo-casuale, avra' quindi anche la distribuzione uniforme, e andrebbe bene per quanto richiesto.

Diciamo che occorrerebbe anche dimostrare il teorema:
Sia Sn una successione di valori casuali, allora anche Sn%M (La successione dei valori in modulo M) e' una successione di valori casuali.
Lascio al lettore la facile dimostrazione
(Ho sempre sognato di poterlo dire...)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 26-05-2009 alle 00:51.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 01:51   #8
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Ma perché usare:

/dev/urandom
/dev/random

fa schifo? O non è su linux?
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 02:37   #9
xsatellitex
Member
 
L'Avatar di xsatellitex
 
Iscritto dal: Dec 2007
Messaggi: 190
intanto scarico anche il libro
__________________
Cinema e Film
xsatellitex è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 12:16   #10
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
xsatellitex ma nello specifico cosa devi fare? Questo aiuterebbe a capire che tipo di generatore ti serve.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 12:31   #11
xsatellitex
Member
 
L'Avatar di xsatellitex
 
Iscritto dal: Dec 2007
Messaggi: 190
No volevo solo capire come vengono realizzati i generatori di numeri casuali che di solito si trovano come funzioni built-in in molti linguaggi di programmazione
__________________
Cinema e Film
xsatellitex è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 13:02   #12
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Quelli che trovi, ad esempio in C/C++ sono generatori lineari congruenziali. Non li trovi nel libro che ti ho detto io, ma se cerchi su google si.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 16:53   #13
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Diciamo che occorrerebbe anche dimostrare il teorema:
Sia Sn una successione di valori casuali, allora anche Sn%M (La successione dei valori in modulo M) e' una successione di valori casuali.
1. chiarisci "casuale";
2. i computers non memorizzano numeri arbitrariamente grandi, chiarisci l'intervallo dei suddetti valori;
3. perché la successione si chiama Sn? i valori sono in numero di n?


Quote:
Lascio al lettore la facile dimostrazione
(Ho sempre sognato di poterlo dire...)
meno sogni e piu fatti, cosi é troppo comodo; fuori la facile dimostrazione, e mi raccomando rigore, grazie

Ultima modifica di fero86 : 26-05-2009 alle 16:55.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 17:18   #14
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Scusate la deformaziona ingegneristica... a cosa serve la dimostrazione??? Lasciatela ai matematici!

Cmq tanto per rispondere alla domanda iniziale Se vuoi sapere come fa ad esempio il C++ per generare numeri casuali basta che guardi:

http://it.wikipedia.org/wiki/Numeri_pseudo-casuali
http://it.wikipedia.org/wiki/Generat..._congruenziale

Ultima modifica di Ikon O'Cluster : 26-05-2009 alle 17:22.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 17:55   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
cmq per la dimostrazione che se dato il processo stocastico Sn anche Sn mod N sia stocastico a orecchio mi suona che sia così ma per la dimostrazione magari è meglio aspettare l'intervento di qualche matematico (ZioSilvio?)

PS processi stocastici "tempo discreto" naturalmente intendo...
Per la cronaca, tra le ipotesi serve anche che N<<Max(Sn)
Altrimenti ci possono essere irregolarita' nella distribuzione che farebbero preferire alcuni valori (quelli piu' bassi) rispetto ad altri.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 18:21   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
questa non la sapevo
Immagina di avere il range casuale tra 0 e 10000, quindi con distribuzione uniforme dei valori.
E di svilupparla con modulo 9000

Ovviamente i valori 0-1000 capiteranno il doppio piu' frequenti di quello 1000-9000 (relativi ai valori originali compresi tra 9000-10000 che in modulo 9000 torneranno tra 0-1000), e quindi la distribuzione non sara' piu' uniforme e non avremo piu' una successione casuale.

Se invece la si siluppasse per esempio con modulo 11 (valore "a caso" non divisore del massimo del range di cui prima), allora e' pur sempre vero che alcuni valori, sempre i piu' bassi, sarebbero piu' frequenti, ma di una parte su 1000 circa.

Per la dimostrazione rigorosa lascio a fero86, cosi' magari pensando a qualcosa raddrizza le ultime 2 giornate che mi sembrano partite con il piede sbagliato.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 20:00   #17
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
e allora?


Quote:
una successione convergente per definizione non arriva a numeri arbitrariamente grande, ma è tale che oltre un certo indice qualsiasi differenza tra due valori della successione è minore di un epsilon piccolo a piacere
mi sono perso la parte in cui veniva specificato che la successione é convergente.


Quote:
n è solo un indice arbitrario per indicare una successione di valori "numerabile"...
quindi i valori di Sn possono anche essere n+1?non credo.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 20:06   #18
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Per la dimostrazione rigorosa lascio a fero86,
dimostrazione di cosa a questo punto? che il teorema vale solo per i tuoi comodi valori di modulo?
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 20:10   #19
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da Ikon O'Cluster Guarda i messaggi
Scusate la deformaziona ingegneristica... a cosa serve la dimostrazione??? Lasciatela ai matematici!
vogliamo fare un programma funzionante, si o no?

se vuoi sapere cosa succede di fatto quando si usa l'operatore modulo a sproposito leggiti questo interessantissimo articolo:
http://www.hwupgrade.it/forum/showthread.php?t=1196677
paragrafo "Sequenze uniformemente distribuite in un intervallo assegnato".
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2009, 20:21   #20
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
60 minuti. a parte gli scherzi, allora cosa? hai chiesto la definizione di processo stocastico... quella è...
veramente ho chiesto tutt'altro: gugoXX ha proposto un suo teorema in cui un termine ("casuale") non viene chiarito. che qualitá deve avere uno di quei valori per essere casuale? deve non essere predicibile in base a qualche altro fattore? deve essere il risultato di una variabile aleatoria che ha una distribuzione ben precisa? io mica leggo nel pensiero degli altri.


Quote:
nel problema che stai analizzando non si presentaranno successioni divergenti, i numeri casuali li genererai comunque all'interno di un intervallo chiuso, quindi ci sarà un limite superiore...
quale intervallo? vogliamo specificare? altrimenti il povero lettore continuerá per mesi a cercare la "facile" dimostrazione. comunque ormai é giá stato specificato qualche post fa.


Quote:
anzi, a dire il vero, si possono avere anche successioni divergenti (ad esempio (-1)^n, se la memoria non mi inganna),
(-1)^n non é divergente, é indeterminata, ma non divaghiamo


Quote:
quello che interessa a te è che siano limitate...
e in base a cosa mi interessa?
si richiedono un po' troppe interpretazioni per questo teorema, mi sembra un po' farlocco... tanto vale che affermi empiricamente qualcosa anch'io: direi di non usare sto modulo su di un GUID.


Quote:
che vuol dire? sono numeri, possono essere tutti i numeri che ti pare... puoi anche definire una successione Sn = n+1... naturalmente diverge... ma non capisco dove vuoi andare a parare...
mettiamo n=3 e scegliamo dei valori a caso (visto che sono "casuali" ) per una nostra S3 (3 scritto a pedice): {1, 2, 3, 4}; la successione {1, 2, 3, 4} contiene n+1=4 valori. va tutto bene?
fero86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
Cina: eseguito il test della navicella M...
Mistral, il rivale europeo di OpenAI, in...
Libri piratati, allarme rosso: 722 milio...
Ayaneo svela quasi tutte le specifiche d...
Sony chiude definitivamente con i regist...
Renault Twingo E-Tech Electric sotto i 2...
Auto elettriche, il freddo non fa pi&ugr...
Amazon, ancora sconti sugli smartphone: ...
Il dispositivo hardware AI di Jony Ive p...
Wikipedia valuta il blocco di Archive.to...
Cupra Tavascan primo veicolo cinese a en...
openSIL, il firmware open-source di AMD ...
Da dove avete scaricato 7-zip? Il vostro...
Fotocamera selfie da 100 megapixel: la n...
Robot aspirapolvere in super offerta su ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v