ziurek Temat założony przez niniejszego użytkownika |
Losowanie różnych liczb? » 2008-12-13 14:47:02 Oto mój problem:
pisze program lotto (imitujący 3 gry z Lotto: multilotek, duzy lotek i twoj szczesliwy numerek).
Tak wygląda kod:
[kod src="C++"]#include <iostream>
using namespace std;
int main() { struct lotek { int multilotek[80]; unsigned int duzylotek; unsigned int numerek; }; lotek typ; char wybor; cout<<"Witaj w symulatorze Lotto!"<<endl<<endl; cout<<"Wybierz typ gry: (1-multilotek, 2-duzy lotek, 3-twoj szczesliwy numerek):"<<endl; cin>>wybor; cin.ignore(); srand(time(0)); if(wybor=='1') { for(int o=0;o<80;o++) { typ.multilotek[o]=(rand()%80)+1; } cout<<endl<<"Witaj w symulatorze Multilotka!"<<endl<<endl; cout<<"Oto wylosowane liczby: "; for(int j=0;j<20;j++) { _sleep(500); cout<<typ.multilotek[j]<<" "; } } getchar(); return 0; }[/kod]
Na razie mam napisany tylko symulator multilotka. Resztę napiszę bez problemu jeżeli ktoś mi wyjaśni jak zrobić losowanie liczb bez powtórzenia?? Bo w tym przypadku program losuje liczby, ale je powtarza. |
|
Turbo |
» 2008-12-13 17:07:10 Ja bym to zrobił tak Losuje liczbę którą mam w zmiennej A Losuje liczbę do Zmiennej B Sprawdzamy czy Zmienna A jest Równa zmiennej B Jeżeli tak losuje jeszcze raz
|
|
ziurek Temat założony przez niniejszego użytkownika |
» 2008-12-13 17:18:49 Zależy mi na zastosowaniu tablic i struktur w tym programie. Turbo mógłbyś zobrazować ta sytuację kodem źródłowym? |
|
Turbo |
» 2008-12-13 18:59:24 #include <iostream> #include <conio.h> using namespace std; int tablica[ 10 ]; int main() { int tablica[ 10 ]; { tablica[ 1 ] = rand() % 80;; tablica[ 2 ] = rand() % 80;; while( tablica[ 1 ] == tablica[ 2 ] ) { tablica[ 2 ] =( rand() % 80 ) + 1; } cout << tablica[ 1 ] << endl; cout << tablica[ 2 ]; } getch(); return 0; }
U mnie działa |
|
DejaVu |
» 2008-12-13 20:34:56 Jeśli chcesz losować liczby bez powtórzeń, to musisz napisać mniej więcej coś takiego: int liczba = losuj( 1, 80 ); while( szukajLiczby( tablica, ilosc, liczba ) == true ) { liczba = losuj( 1, 80 ); } dodajLiczbeDoTablicy( tablica, ilosc, liczba );
Oczywiście każdą z funkcji musisz napisać. |
|
ziurek Temat założony przez niniejszego użytkownika |
» 2008-12-13 22:01:58 Dzięki za wszelką pomoc, tak rozwiązałem problem: #include <iostream>
using namespace std;
int main() { struct lotek { int multilotek[ 80 ]; unsigned int duzylotek; unsigned int numerek; }; lotek typ; char wybor; int wybrana_liczba; cout << "Witaj w symulatorze Lotto!" << endl << endl; cout << "Wybierz typ gry: (1-multilotek, 2-duzy lotek, 3-twoj szczesliwy numerek):" << endl; cin >> wybor; cin.ignore(); srand( time( 0 ) ); if( wybor == '1' ) { for( int i = 0; i < 80; i++ ) { do { wybrana_liczba =( rand() % 80 ) + 1; typ.multilotek[ i ] = wybrana_liczba; } while( wybrana_liczba != typ.multilotek[ i ] ); } cout << endl << "Witaj w symulatorze Multilotka!" << endl << endl; cout << "Oto wylosowane liczby: "; for( int j = 0; j < 20; j++ ) { _sleep( 500 ); cout << typ.multilotek[ j ] << " "; } } getchar(); return 0; }
|
|
jimmye |
hmm.. » 2008-12-16 17:00:54 Ja chcialem zrobic obliczanie prawdopodobienstwa trafienia, czyli podaje ile liczb skreslam na 20, potem liczbe, dla ktorej liczymy prawdopodobienstwo, i wylicza.. http://www.lotto.win.pl/szanse.aspx niby na tej stronie jest to wyjasnione ale jak zrobic takie dzialanie w C++? |
|
lynx |
» 2008-12-16 19:37:35 Ale prawdopodobieństwo wylosowania przez nas zaznaczonej liczby jest zawsze takie same. ;) W przypadku losowania jednej liczby wśród 20 i 1 zaznaczonej, prawdopodobieństwo wynosi 1 do 20. I to nie jest ważne czy zaznaczysz liczbę 2, czy 5. Więc program nie musi się pytać o którą liczbę Ci chodzi.
Chyba, że chodzi Ci żeby program liczył za którym razem twoja liczba zostanie trafiona. :D Takie coś możesz zrobić na pętli for jest ona chyba najlepsza do tego celu. |
|
« 1 » 2 |