



Moderadors: samadona, lafaltaenvide
Ara en serio, me passat mitja nit estudiant un poc aquesta funció del random. I he arribat a la conclusió que el que deim aquí son pardalades.¿Y cómo se genera la semilla? He ahí el quid de la cuestión. Bien, java.util.Random usaba simplemente el reloj como semilla, esto hace que si alguien sabe en qué momento se generaron esos números aleatorios, aunque sólo sea aproximadamente, pueda ponerse a probar con todos los valores posibles del reloj hasta regenerar nuestra secuencia de números aleatorios. Naturalmente si estamos usando estos números para producir una clave el resultado es desastroso.
Para evitar el problema anterior java.security.SecureRandom usa un mecanismo basado en el cronometraje de hilos (threads) del sistema. Cita literal:
It relies on counting the number of times that the calling thread can yield while waiting for another thread to sleep for a specified interval.
Se advierte de que la inicialización puede llevar unos segundos pero yo no he notado ese efecto. Sun también reconoce que el mecanismo no ha sido comprobado exhaustivamente lo que a un paranoico de la seguridad le deja un regustillo amargo. Hablaremos de más posibilidades en futuros artículos.
Hay que saber que también podemos inicializar la semilla nosotros mismos si tenemos algunos bytes verdaderamente aleatorios de una fuente externa usando:
public SecureRandom(byte[] semilla)
Huy, huy, després de dies d'investigació ja he trobat perquè en jocfora esta al top, el codi que va posar el mestre obrador sense voler ho ha destapat tot, fixau-vos amb sa linia 15.obrador ha escrit:.Codi: Selecciona’ls tots
private void mescla() { int numberOfCardsProcessed; int order; String name=""; Card card,c; boolean given[] = new boolean[thisGame.numberOfCards]; for (int i=0; i<thisGame.numberOfCards; i++) given[i]=false; numberOfCardsProcessed=0; randomCardList.removeAllElements(); while (true) { int i = Math.abs(generator.nextInt()%thisGame.numberOfCards); if (!given[i]) { given[i]=true; c = thisGame.cardAt(i); order = thisGame.Jocfora;Queralbs numberOfCards=30-c.getOrder(); card=new Card(c.getName(),order,c.getValue()); randomCardList.push(card); if (++numberOfCardsProcessed==thisGame.numberOfCards) { return; } } } }
Bona l'has feta jove.krusenstern_1977 ha escrit:Així seure a una cadira o a una altra té importància a l'hora de vore peces???![]()
![]()
![]()
Te puc assegurar que es mes fàcil, estar concentrat on posen ses cartes quan mesclen en persona, i crear un percentatjes aproximats de si sortiran les peces. Que el que dius tu... A retruc.net si surt lamo i sa madona juntes, es quasi impossible que a la proxima torni a sortir, en canvi en persona si pot passar les possibilitats son mes groses.krusenstern_1977 ha escrit:Així seure a una cadira o a una altra té importància a l'hora de vore peces???![]()
![]()
![]()
No és exacte... random genera nombres sencers i la manera de generar 36 valors és DIVIDINT i mirant quin residu en queda, per tant res d'arrodonoments. Per tant teòricament, segons Sun Microsystems Random funciona bé.Jove ha escrit: Jo vull partir que la formula que aplica n'Obrador es sa correcte, perquè n'hi ha varies. Això supòs que ja ho dirà. El problema que jo hi veig es que (random) genera valors entre 0 i 1, la manera per generar 36 valors, es multiplicant, i després me deman, com redondetjas es valor obtingut? Aquí el percentatges podran variar, he mirat un exemple per aconseguir un numero del 1 al 6, i si redondejam al superior, l'estadística queda que hi ha mes possibilitat de treure un 6 que un 1.
Suposam que el mestre ha fet el correcte, que segurament es així, per qualque cosa l'hi donaren el títol.
Aaaaara l'has clavada...Jove ha escrit: Com es genera la semilla no crec que importi molt, si jo la generàs manualment i ni pos una diferent cada vegada ningú ho sabria es quasi impossible resoldre una cadena d'aquestes característiques, no vol dir que qualque expert, molt expert hi pogués arribar.
I ara la pregunta del milió. I com sabreu per quina sala comença i quin jugador comença?. Perquè hi ha 4 sales i dins la sala quatre cadires senyors.
Jo vos convit a provar la funció random del pascal o basic, que son mes sencilles, per cert tu poses la semilla, i vos assegur que vos passareu tot el dia provant i no encertareu el numero, i a mes posarem un numero del 1 al 10. Ara imaginau-vos un del 1 al 36. I a demés amb una semilla treta del rellotge, i a demés haureu de tria sala, i per colmo tria lloc dins la sala.
Jove ha escrit: I ara deixam el truc virtual i anem en persona.
Quantes vegades feis un truc i no veis ni una puta peça, jo vos assegur que moltes. Me passat varis cantons sense veure res...
Això es el mateix que les maquinetes escurabutxacas, no estan trucades, simplement tenen un percentatge i si tu en el moment oportú hi amolles un euro, pues bingo, però davant teu segurament han quedat a dos velas el resta del percentatge. No es impossible treure el 75 % de cop, qualque vegada passa.
Au! Idò això es tot.