Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Lotto 6/49 in C
Last Updated: Nov 26 2016 13:42, Started by
VladBtz
, Nov 20 2016 13:52
·
0
#1
Posted 20 November 2016 - 13:52
#include <stdio.h> #include <stdlib.h> #include <time.h> #define false 0 #define true 1 int main(int argc, char** argv) { srand(time(NULL)); int nrLotto[6],stop; printf("Numere Lotto 6/49: "); for(int i=0;i<6;i++) { nrLotto[i]=rand()%49+1; do{ stop=true; for(int j=0;j<i;j++) { if(nrLotto[j]==nrLotto[i]) //ne asiguram ca nu se repeta { stop=false; nrLotto[i]=rand()%49+1; } else if(nrLotto[j]>nrLotto[i]) //sortare { nrLotto[j] +=nrLotto[i]; nrLotto[i] = nrLotto[j]-nrLotto[i]; nrLotto[j] -= nrLotto[i]; stop=false; } } }while(stop==false); printf("%d ",nrLotto[i]); } return 0; } Poate intr-o zi voi concepe si partea de GUI. Edited by VladBtz, 20 November 2016 - 14:02. |
#2
Posted 20 November 2016 - 13:57
Dragut, dar prea previzibil. Schimb ora la pc si aflu ce vei extrage.
Incearca sa folosesti un generator random mai sigur. Poti incerca si o varianta care sa nu aibe niciodata nevoie de mai mult de 6 extrageri. |
#3
Posted 20 November 2016 - 14:16
Adica o varianta de random care genereaza in mod prestabil numere aleatorii diferite ?
Ce zici de varianta in care am deja 49 de numere in array(cum au aia de la Loterie urna cu 49 bile) si le amestec cu random shuffle, apoi le aleg pe primele 6 ? O sa am nevoie de functia pe care o gasesc in algorithm, dar C nu imi recunoaste biblioteca asta. Edited by VladBtz, 20 November 2016 - 14:19. |
#4
Posted 20 November 2016 - 14:24
dani.user, on 20 noiembrie 2016 - 13:57, said:
Dragut, dar prea previzibil. Schimb ora la pc si aflu ce vei extrage. Incearca sa folosesti un generator random mai sigur. Poti incerca si o varianta care sa nu aibe niciodata nevoie de mai mult de 6 extrageri. |
#5
Posted 20 November 2016 - 14:31
VladBtz, on 20 noiembrie 2016 - 14:16, said:
Ce zici de varianta in care am deja 49 de numere in array(cum au aia de la Loterie urna cu 49 bile) si le amestec cu random shuffle Random shuffle pe 49 elemente implica mult mai mult de 6 numere random. Extragi un element random, il scoti din array => data viitoare cand extragi unul random nu mai ai cum sa dai peste unul deja extras. Kain_12, on 20 noiembrie 2016 - 14:24, said:
Mi-ai captivat atentia. Poti sa imi dai cateva linkuri unde pot sa citesc mai multe despre chestia cu "schimb ora si aflu ce vei extrage" ? Motorul de numere pseudo-aleatoare l-a initilizat cu time(NULL), numarul de secunde din 1970. rand() iti returneaza mereu aceleasi valori daca initializezi srand() cu aceeasi valoare. Exista alte generatoare de numere pseudo-aleatoare mai sigure, mai greu de prezis. Biblioteca standard a C++ ofera unele. Altele le gasesti in biblioteci. Chiar si sistemele de operare ofera adesea generatoare mai sigure pentru criptografie. |
#6
Posted 20 November 2016 - 17:16
Dupa ce il scot din array va trebui sa micsorez arrayul.
|
#7
Posted 20 November 2016 - 17:51
Eu as folosi /dev/urandom pe Linux/Mac si CryptGenRandom() sau rand_s (tot aia e) in windows, perfect compatibile cu limbajul C.
|
#8
Posted 21 November 2016 - 19:13
Sa vad ca ai inteles C, hai cu o varianta ce foloseste un singur apel la CryptGenRandom cu buffer de dimensiune minima.
|
#10
Posted 26 November 2016 - 13:42
#include <stdio.h> #include <Windows.h> void GetRandomData(void* buffer, size_t bufferSize) { HCRYPTPROV provider; if (!CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { exit(1); } if (!CryptGenRandom(provider, (DWORD)bufferSize, (BYTE*)buffer)) { exit(1); } CryptReleaseContext(provider, 0); } int ExtractNumber(int* numbers, int nrOfNumbers, int index) { index = index % nrOfNumbers; int result = numbers[index]; if (index < (nrOfNumbers - 1)) { numbers[index] = numbers[nrOfNumbers - 1]; } return result; } #define MAX_NUMBERS 49 #define TO_EXTRACT 6 int main(void) { int numbers[MAX_NUMBERS]; for (int i = 0; i < MAX_NUMBERS; ++i) { numbers[i] = i; } unsigned char extractedValues[TO_EXTRACT]; GetRandomData(&extractedValues, TO_EXTRACT); int nrNumbers = MAX_NUMBERS; for (int i = 0; i < TO_EXTRACT; ++i) { printf("%d ", ExtractNumber(numbers, nrNumbers--, extractedValues[i]) + 1); } return 0; }
Edited by dani.user, 26 November 2016 - 14:15. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users