JohnyCNAM Posted March 2, 2012 Report Posted March 2, 2012 Aveam de ales intre 4 persoane, una singura si nu ma puteam hotari.Daca am vrea sa scriem o linie de cod care sa aleaga la intamplare un nr. de la 1-4 tot nu ar fi random.Deci se poate sa scrii un program care chiar alege la "intamplare"?Aia pe random.org cica aleg la intamplare, insa in opinia mea acest lucru este imposibil pentru un calculator.El tot va alege dupa un algoritm anume, insemnand ca alegerea nu va mai fi random.Deci cine ma poate lamuri cum sta treaba cu alesul la intamplare? Quote
nedo Posted March 2, 2012 Report Posted March 2, 2012 Nu exista ceva realmente random. Algoritmurile care sunt postate pe net, sunt de fapt pseudo random number generators.Cea mai buna solutie a ta eset sa folosesti un random number generator care foloseste un seed(samanta), adica pleaca de la un numar(de cele mai multe ori timp-ul) si in baza unui algoritm genereaza un numar.Altfel singura sansa de random reala este datul cu zarul Quote
JohnyCNAM Posted March 2, 2012 Author Report Posted March 2, 2012 Mi-a venit chestia cu random si de la faptul ca tata se juca table online si zicea cat noroc avea tipul cu care juca: dubla dupa dubla, zaruri mari, etc.Si m-am gandit ca jocul "stie" de la inceput cine va castiga partida respectiva. Quote
nedo Posted March 2, 2012 Report Posted March 2, 2012 depinde cum e implementat.Nu cred ca e cineva atat de ... neinspirat sa implementeze un program care sa genereze numere random de la inceput, si sa le foloseasca dupa.Cel mai probabil generarea numarului random se genereaza punctual atunci cand trebuie "aruncate zarurile". Totusi acesti algoritmi pot fi nu tocmai random. Eu am observat in c++ ca uneori daca execut de mai multe ori rand() atunci se intampla sa am un anumit tipar in felul in care sunt generate numerele. Acelasi lucru poate fii si in jocul respectiv de table. Quote
Patrunjel Posted March 2, 2012 Report Posted March 2, 2012 (edited) Chestia ca nu ti se pare ca pot fi random fiindca sunt generate prin algoritmi prestabiliti ti-a intrat in cap cand ai citit pe net sau asa, si acum doar repeti, fara sa gandesti umpic informatia.Cea mai random sursa de informatie care imi vine acuma in cap sunt fenomenele meteo, depind de prea multi factori. Nu ma refer la chestii gen "Maine o sa ploua", ma refer la date clare, pe intervale de timp foarte scurte si pe zone foarte restranse.Sau se pot folosi ca seeduri diferite informatii de pe net, care, la fel, variaza haotic si pot fi considerate random.Nici creierul uman nu produce numere random-random. Eu daca iti zic sa imi zic 100 de numere aleatoare, probabil ai sa-mi zici 90% dintre ele dintr-un interval destul de mic [0,1000] .@nedo, daca iei in cosiderare toate variabilele existente in sistem (forta cu care dai, pozitia cu care incepe zarul, unghiul sub care se arunca zarul, densitatea mediului, etc) poti spune precis ce fata a zarului va cadea Citisem odata un articol pe tema asta.@ionutcristea daca folosesti ca seed momentul de timp in care s-a aruncat zarul (sau orice functie care depinde de momentul asta), jocul nu poate sti de la inceput cine o sa castige, fiindca pur si simplu fiecare jucator poate sa arunce cand vrea pula lui. Daca se foloseste ca seed o valoare constanta pe parcursul jocului, e posibil sa stie deja cine o sa castige, din momentul in care jocul a inceput. Edited March 2, 2012 by Patrunjel Quote
cmiN Posted March 2, 2012 Report Posted March 2, 2012 (edited) La table nu avea cum sa stie de la inceput fiindca erau implicate si deciziile celor doi jucatori.Oricum nedo se referea la ceva de genul:#include <stdio.h>#include <time.h>#include <stdlib.h>#define LIM 4int main(){ int nr; srand(time(NULL)); nr = rand() % LIM + 1; printf("%d\n", nr); return 0;}Functioneaza destul de bine, dar daca vei face teste unul dupa altul vei observa un model de numere descrescatoare fiindca samantele vor fi foarte apropiate si vor cauza un comportament similar, crescator.Daca scoti acel srand mereu vei obtine aceeasi cifra la executarea algoritmului fiindca se va pleca de la aceeasi pasi fara nicio influenta si daca pui o bucla in cod vei observa ca se vor afisa aceleasi numere la fiecare executie in aceeasi ordine.Nu exista random pur / dezordine ... ci o altfel de ordine, dar cu cat entropia e mai mare cu atat pare mai uman la intamplare . Edited March 2, 2012 by cmiN Quote
Patrunjel Posted March 2, 2012 Report Posted March 2, 2012 Da ce-ar fi daca s-ar folosi ca seed numarul care s-a generat data trecuta? S-ar elimina tiparul, si nu ai nici cum sa te alegi cu un ciclu in care ti se genereaza acelasi numar mereu, random(k)=q ; daca random(q)==k => random() are aceeasi forma, da din cate am inteles exista functii de randomizare gandite sa genereze o infinitate de cazuri (cazuri in sensu de ramuri la o functie, ca la mate cu acolada) Quote
JohnyCNAM Posted March 2, 2012 Author Report Posted March 2, 2012 @Patrunjel:M-ai lamurit.Cred ca am prins ideea ta.Mersi de sfat.(ti-as da rep+ da nush de ce nu pot da la nimeni) Quote
begood Posted March 2, 2012 Report Posted March 2, 2012 Random, but not by chance: A quantum random-number generator for encryption, securityna asta e random. Quote
Patrunjel Posted March 2, 2012 Report Posted March 2, 2012 (edited) E posibil sa cresesc, da nu cumva nici ala nu-i random? Particulele nici macar la nivel cuantic nu se comporta comple aleator, ci au diferite probabilitati pentru a se intampla diferite evenimente.Eventual daca ai 4 evenimente posibile, presupunand ca toate au probabilitati egale de a se intampla, poti sa generezi un numar cu adevarat random in baza 4, de exemplu. Edited March 2, 2012 by Patrunjel Quote
nedo Posted March 2, 2012 Report Posted March 2, 2012 , de asta nu stiam. Uite ca totusi exista si ceva true random. Quote
JohnyCNAM Posted March 2, 2012 Author Report Posted March 2, 2012 Nu credeam ca de la un kkt de joc de table se poate ajunge la asa discutii inteligente, care cam depasesc capacitatea mea de intelegere. Quote
TheTime Posted March 2, 2012 Report Posted March 2, 2012 Daca nu iti place sa stii ca numerele tale sunt generate de algoritmi prestabiliti, arhicunoscuti de toata lumea, de ce nu iti faci tu propriul algoritm de random?Am avut acum cateva luni de generat o lista de numere aleatoare si am facut cam asa:1. am declarat un pointer p;2. i-am luat adresa de memorie alocata;3. am trecut adresa respectiva in baza 10;4. am luat catul impartirii la numarul maxim ce imi trebuia.Cam asta e algoritmul de generare, executat pentru fiecare numar in parte. Putina latenta de lucru, dar si-a facut treaba de minune. La calculatoare, alocarea adreselor de memorie mi se pare a fi un random inca neexploatat. Quote
begood Posted March 2, 2012 Report Posted March 2, 2012 (edited) @ TheTime : metoda asta am folosit-o si eu in clasa a 9-a.LE : *asemanatoareE posibil sa cresesc, da nu cumva nici ala nu-i random? Particulele nici macar la nivel cuantic nu se comporta comple aleator, ci au diferite probabilitati pentru a se intampla diferite evenimente.Eventual daca ai 4 evenimente posibile, presupunand ca toate au probabilitati egale de a se intampla, poti sa generezi un numar cu adevarat random in baza 4, de exemplu.chiar daca la nivel cuantic exista anumite probabilitati de a se intampla acele evenimente, asta nu inseamna ca ele nu se vor intampla in mod complet random, fara sa existe vreo metoda sa prezici urmatorul pas. Edited March 2, 2012 by begood Quote
Patrunjel Posted March 2, 2012 Report Posted March 2, 2012 (edited) Pai un algoritm de randomizare n-ar trebui sa arate "favoritisme" spre anumite rezultate (dupa multe, multe iteratii, ca daca se fac putine, e pur si simplu intamplator ca un numar apare ceva mai des), si daca tu ai un eveniment cu probabilitate de as se produce de 99% si unul care se produce in 1% din cazuri, algoritmul / masinaria va genera numarul care corespunde primului eveniment mai des decat celalalt, deci nu toate numerele din domeniul de valori au aceeasi probabilitate de a se produce.Daca se tine conte de "offsetu" asta, atunci e 100% random . *Ai putea sa generezi 100 de valori, si daca un eveniment se intampla in mai mult de probabilitatea_lui cazuri, atunci el este considerat elementul generat... Da asta tine doar pentru 2 evenimente, da ajunge, ca generezi numere in baza 2 Plm Edited March 2, 2012 by Patrunjel Quote
begood Posted March 2, 2012 Report Posted March 2, 2012 Statistic un generator cuantic de numere aleatoare care poate alege intre 0 si 1 va atinge dupa n iteratii ~50% 0 si ~50% 1. La asta ma refeream. Nu prefera nici pe 1 nici pe 0. Quote
Patrunjel Posted March 2, 2012 Report Posted March 2, 2012 Da, da generatorul ala cuantic genereaza in functie de evenimentele care se produc, si vroiam sa zic ca evenimentele alea se produc cu probabilitati diferite, deci daca nu se ia in considerare diferenta de probabilitati iese aiurea. Oricum, articolul e misto, si e treaba fizicienilor sa se descurce cu problemele astea, nu a noastra Quote
zorro59 Posted March 2, 2012 Report Posted March 2, 2012 Nimic nu este random cu adevarat. Toate au o ordine. Pana si la zar, totul tine de fizica, nu de intamlplare. Quote
qbert Posted March 2, 2012 Report Posted March 2, 2012 Desi nici asta nu este adevarat random,it`s pretty cool:) Behind Intel's New Random-Number Generator - IEEE Spectrum . Quote
Ghett0 Posted March 2, 2012 Report Posted March 2, 2012 Da-mi puterea de calcul necesara pentru a calcula o infinitate de variabile in timp real si atunci iluzia de aleator va disparea.Un generator de numere aleatoare bazat pe background noise? Ganditi-va la un microfon dintr-o intersectie aglomerata(sau intr-o camera plina de femei care barfesc). E destul de random asa? Quote
TheTime Posted March 2, 2012 Report Posted March 2, 2012 Da-mi puterea de calcul necesara pentru a calcula o infinitate de variabile in timp real si atunci iluzia de aleator va disparea.Un generator de numere aleatoare bazat pe background noise? Ganditi-va la un microfon dintr-o intersectie aglomerata(sau intr-o camera plina de femei care barfesc). E destul de random asa?Nu, pentru ca probabilitatea de a fi 0 zgomot intr-o intersectie nu e prea mare, deci distributia nu este echidistanta intre toate variantele posibile. Ca sa nu mai vorbim de o camera cu femei in ea, acolo nu e liniste niciodata! Quote
Ghett0 Posted March 2, 2012 Report Posted March 2, 2012 The louder the better. Asa datele primite de la microfon ar fi destul de random. Quote
JohnyCNAM Posted March 2, 2012 Author Report Posted March 2, 2012 Deci la ce concluzie ajungem?Exista sau nu "true random"? Quote
begood Posted March 2, 2012 Report Posted March 2, 2012 Fuck knows.Crezi intr-o zeitate ? atunci nu exista randomness.Crezi in determinism ? atunci nu exista randomness.Crezi ca universul este sortit hazardului, atunci poate exista.IntellectualLoafing.com Life Q & A: Is There Any True Randomness in the World? Quote
Ghett0 Posted March 2, 2012 Report Posted March 2, 2012 O zeitate(eg: Dumnezeu) n-ar putea sa joace zaruri cu lumea asta pentru ca oricum ar cunoaste de dinainte rezultatul Concluzia mea este ca randomness-ul este acel cuvant care explica situatia in care nu putem cunoaste toate variabilele astfel incat sa previzionam rezultatul. Asa cum am spus si mai devreme, totul se poate calcula daca stii toate regulile jocului(lucru pe care nu-l stim).Deci exista sau nu exista?Daca esti omniscient, nu exista. Pentru restul, da . Quote