
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”