Tutti i linguaggi di programmazione offrono funzionalità per generare numeri causali. In realtà, non sempre si può parlare di vera casualità tanto che queste caratteristiche vengono spesso etichettate come pseudo-random. Un servizio esistente da molti anni, Random.org, offre numeri “davvero” casuali prodotti mediante la raccolta dei dati più eterogei. Tale servizio anima da anni molte applicazioni di vario genere: lotterie e giochi, simulatori e molto altro.
E’ possibile utilizzare le capacità di Random.org sfruttando le sue API che dialogano tramite HTTP in formato JSON-RPC. Quest’ultimo è un modo per interrogare funzioni remote passando e ricevendo dati in JSON.
Ad esempio, potremo eseguire una sperimentazione mediante uno dei vari client HTTP di cui abbiamo parlato sinora come cURL o Postman purchè si ottenga da Random.org un’apposita chiave, eventualmente anche in versione Beta.
Fatto ciò possiamo eseguire una richiesta POST (richieste GET non sono mai accettate) assegnando come Content-Type (tra gli header) il valore “application/json-rpc” e come body una serie di parametri che dipendono dal metodo JSON-RPC che vogliamo utilizzare.
Poniamo il caso, di voler chiedere 6 numeri casuali interi compresi tra 18 e 32. Dopo aver chiesto una propria Beta API key (da inserire nel parametro apiKey), invochiamo il metodo generateIntegers inserendo in Postman una richiesta con il seguente body:
{
"jsonrpc": "2.0",
"method": "generateIntegers",
"params": {
"apiKey":"1bd78ea6-ff5c-60c9-8856-7846720ccdc0",
"n":"6",
"min":"18",
"max":"32"
},
"id": 51
}
La risposta del servizio sarà simile alla seguente:
{
"jsonrpc":"2.0",
"result":{
"random":{"data":[26,26,30,19,20,19],
"completionTime":"2017-01-22 11:51:45Z"},
"bitsUsed":23,"bitsLeft":249917,
"requestsLeft":996,
"advisoryDelay":100
},
"id":51
}
Notiamo che i sei numeri richiesti si trovano nella proprietà data dell’oggetto random innestato. Inoltre, la risposta conterrà la proprietà id valorizzata con lo stesso identificatore (pari a 51) che abbiamo utilizzato nella richiesta: ciò al fine di permettere una corretta associazione delle informazioni attraverso la sessione di lavoro.
Random.org è riuscito a fondare un intero servizio di successo su un’attività che sembra – apparentemente – banale e altamente disponibile e questo anche grazie alla buona documentazione che integra a supporto delle sue API.
E voi avete mai usato “veri” numeri random nelle vostre applicazioni? Fateci sapere!












No Responses to “Numeri davvero casuali con Random.org”