Jump to content
JohnyCNAM

Random or not?

Recommended Posts

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?

Link to comment
Share on other sites

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 :))

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 :P 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 by Patrunjel
Link to comment
Share on other sites

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 4


int 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 by cmiN
Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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 by Patrunjel
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

@ TheTime : metoda asta am folosit-o si eu in clasa a 9-a.

LE : *asemanatoare

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.

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 by begood
Link to comment
Share on other sites

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 . :D

*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 by Patrunjel
Link to comment
Share on other sites

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 :))

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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 :).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...