{"id":12732,"date":"2017-09-07T18:40:17","date_gmt":"2017-09-07T16:40:17","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12732"},"modified":"2017-09-07T18:40:17","modified_gmt":"2017-09-07T16:40:17","slug":"numeri-davvero-casuali-con-random-org","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/numeri-davvero-casuali-con-random-org\/","title":{"rendered":"Numeri davvero casuali con Random.org"},"content":{"rendered":"<p>Tutti i linguaggi di programmazione offrono funzionalit\u00e0 per generare numeri causali. In realt\u00e0, non sempre si pu\u00f2 parlare di vera casualit\u00e0 tanto che queste caratteristiche vengono spesso etichettate come <strong>pseudo-random<\/strong>. Un servizio esistente da molti anni, <a href=\"https:\/\/www.random.org\/\" target=\"_blank\" rel=\"noopener\">Random.org<\/a>, offre <strong>numeri &#8220;davvero&#8221; casuali<\/strong> prodotti mediante la raccolta dei dati pi\u00f9 eterogei. Tale servizio anima da anni molte applicazioni di vario genere: lotterie e giochi, simulatori e molto altro.<\/p>\n<p>E&#8217; possibile utilizzare le capacit\u00e0 di Random.org sfruttando le sue <strong>API che dialogano tramite HTTP in formato JSON-RPC<\/strong>. Quest&#8217;ultimo \u00e8 un modo per interrogare funzioni remote passando e ricevendo dati in JSON.<\/p>\n<p>Ad esempio, potremo eseguire una sperimentazione mediante uno dei vari client HTTP di cui abbiamo parlato sinora come cURL o <a href=\"http:\/\/www.devapp.it\/wordpress\/postman-sviluppa-le-tue-api-piu-velocemente\/\" target=\"_blank\" rel=\"noopener\">Postman<\/a>\u00a0purch\u00e8 si ottenga da Random.org un&#8217;apposita chiave, eventualmente anche in versione <a href=\"https:\/\/api.random.org\/api-keys\/beta\" target=\"_blank\" rel=\"noopener\">Beta<\/a>.<\/p>\n<p>Fatto ci\u00f2 possiamo eseguire una <strong>richiesta POST<\/strong> (richieste GET non sono mai accettate) assegnando come <em>Content-Type<\/em> (tra gli header) il valore &#8220;application\/json-rpc&#8221; e come <em>body<\/em> una serie di parametri che dipendono dal <a href=\"https:\/\/api.random.org\/json-rpc\/1\/basic\" target=\"_blank\" rel=\"noopener\">metodo <\/a>JSON-RPC che vogliamo utilizzare.<\/p>\n<p>Poniamo il caso, di voler <strong>chiedere 6 numeri casuali interi compresi tra 18 e 32<\/strong>. Dopo aver chiesto una propria Beta API key (da inserire nel parametro apiKey), invochiamo il metodo <em>generateIntegers<\/em> inserendo in Postman una\u00a0richiesta con il seguente body:<\/p>\n<pre class=\"lang:js decode:true \">{\r\n    \"jsonrpc\": \"2.0\",\r\n    \"method\": \"generateIntegers\",\r\n    \"params\": {\r\n    \"apiKey\":\"1bd78ea6-ff5c-60c9-8856-7846720ccdc0\",\r\n    \"n\":\"6\",\r\n    \"min\":\"18\",\r\n    \"max\":\"32\"\r\n    },\r\n    \"id\": 51\r\n}<\/pre>\n<p>La risposta del servizio sar\u00e0 simile alla seguente:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"jsonrpc\":\"2.0\",\r\n  \"result\":{\r\n             \"random\":{\"data\":[26,26,30,19,20,19],\r\n             \"completionTime\":\"2017-01-22 11:51:45Z\"},\r\n             \"bitsUsed\":23,\"bitsLeft\":249917,\r\n             \"requestsLeft\":996,\r\n             \"advisoryDelay\":100\r\n           },\r\n   \"id\":51\r\n}<\/pre>\n<p>Notiamo che i sei numeri richiesti si trovano nella <em>propriet\u00e0 data<\/em> dell&#8217;oggetto random innestato. Inoltre, la risposta conterr\u00e0 la <em>propriet\u00e0 id<\/em> valorizzata con lo stesso identificatore (pari a 51) che abbiamo utilizzato nella richiesta: ci\u00f2 al fine di permettere una corretta associazione delle informazioni attraverso la sessione di lavoro.<\/p>\n<p>Random.org \u00e8 riuscito a fondare un intero servizio di successo\u00a0su un&#8217;attivit\u00e0 che sembra &#8211; apparentemente &#8211; banale e altamente disponibile e questo anche grazie alla buona <a href=\"https:\/\/api.random.org\/json-rpc\/1\/\" target=\"_blank\" rel=\"noopener\">documentazione <\/a>che integra a supporto delle sue API.<\/p>\n<p>E voi avete mai usato &#8220;veri&#8221; numeri random nelle vostre applicazioni? Fateci sapere!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutti i linguaggi di programmazione offrono funzionalit\u00e0 per generare numeri causali. In realt\u00e0, non sempre si pu\u00f2&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13240,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[481],"tags":[1531,1854,1851,1852,1853],"class_list":["post-12732","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-risorse-utili","tag-json","tag-json-rpc","tag-random-numeri-casuali","tag-random-org","tag-web-api"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12732"}],"version-history":[{"count":2,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12732\/revisions"}],"predecessor-version":[{"id":13241,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12732\/revisions\/13241"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13240"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}