Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Losowanie różnych liczb?

Ostatnio zmodyfikowano 2008-12-16 19:54
Autor Wiadomość
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.
   
P-2726
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

P-2727
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?
P-2728
Turbo
» 2008-12-13 18:59:24
C/C++
#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
P-2730
DejaVu
» 2008-12-13 20:34:56
Jeśli chcesz losować liczby bez powtórzeń, to musisz napisać mniej więcej coś takiego:

C/C++
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ć.
P-2732
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:
C/C++
#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;
}
P-2737
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++?
P-2763
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.
P-2770
« 1 » 2
  Strona 1 z 2 Następna strona