losowanie

Problemy i ich rozwiązania w C++.

losowanie

Postprzez jawa » piątek, 4 stycznia 2013, 20:56

Witam potrzebuje porady w zwiazku z programem losujacym liczby duzego lotka wiec 6 liczb z 49.Program ten ma losowac niepowtarzajace sie 6 liczb za kazdym razem. kod ktory napisalem losuje niepowtarzajace sie liczby o ile powtorne losowanie odbedzie sie minimum 1sekunde pozniej...jesli nastepne losowanie jest w tej samej sek to liczby sa takie same....jak sobie z tym poradzic?

Kod: Zaznacz cały
#include <iostream>
#include <conio.h>
using namespace std;
////////////////////////////////////////////////////////////////////////////////////////////
string czyPowtorzyc;
void losowanie();
/////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    cout<<" ...:: Witam w generatorze duzego lotka ::...\n"<<endl;
    losowanie();
   
       
    getch();
}
/////////////////////////////////////////////////////////////////////////////////////////////
void losowanie()
    {
        do
            {
                int tab[6], i;
                srand(time(NULL));
                for(i=0; i<6; i++)
                {
                         tab[i]=rand()%49+1;
                         
                }
                for(i=0; i<6; i++)
                {
                         cout << tab[i] << ' ';
                }
                cout<<"\n\nCzy chcesz powtorzyc losowanie liczb?? (T/N) "<<endl;
                cin>>czyPowtorzyc;
             }
         while(czyPowtorzyc!="n");
    }

jawa
Bywalec
Bywalec
 
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: losowanie

Postprzez Morfidon » sobota, 5 stycznia 2013, 13:45

Masz to zrobione w lekcji 25:
Lekcja 25 - Losowanie liczb pseudolosowych - 15 min i 58 s

oraz masz tam wyjaśnione, dlaczego to nie działa.
Morfidon
Administrator
Administrator
 
Posty: 1324
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48

Re: losowanie

Postprzez jawa » poniedziałek, 7 stycznia 2013, 01:54

Dzieki sliczne za namiary......ale nie rozumie ;((( ogladam setny raz i nie moge pojac opcji niepowtarzania sie numerow...jak to sie dzieje!!
Juz rozpisalem sobie to do banalnej formy wraz z moim tokiem rozumowania:

Kod: Zaznacz cały
#include<iostream>

//////////////////////////////////////

using namespace std;

//////////////////////////////////////

void losowanie ( int, int );

//////////////////////////////////////

int main()
{
  losowanie( 49, 6 ); 
  system("pause");
  return 0;
}

//////////////////////////////////////

void losowanie ( int zIlu , int ile )              //czyli  ( 49,6)
{
    srand(time(NULL));
    int *tab = new int [ile];                         //czyli tab[6] -tablica 6 elementowa
    for ( int i=0; i<6; i++ )                         
        {                                                            /* dajmy na to ze pod pierwszym elementem zostala wylosowana i wpisana
         tab[i] = rand()%49+1;                                wartosc 20... wiec tab[0] =20 no i dalej nie  rozumiem....
         for ( int j=0; j<i+1; j++)                       wiadomo ze 
             {                                                        tab od i=0 ma wartosc 20 i w pierwszy zadzialaniu  drugiej petli FOR , j=0
              if (tab[i]==tab[j] && i!=j)                  ...ale w jaki sposob kompilator wie ze istnieje cos takiego jak tab[j]  i  ...
                {                                                        jak trafiaja tam losowane liczby zeby porownac je z tab[i]
                   i--;                                                         co do pierwszej tablicy tab[i] kompilator wie bo zostala mu przypisana
                        break;                                                     f-cja rand....a co z tab[j]???? */
                      }                                                               
                    else if ( j==i)
             
                   cout << " liczba [ " << i+1 << " ]= " << tab[i] << endl;       
             }     
             
        }
}



Prosze o naprawde "dokladne wytlumaczenie" no nie moge tego zalapac!! Dzieki sliczne za pomoc
jawa
Bywalec
Bywalec
 
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: losowanie

Postprzez Morfidon » poniedziałek, 7 stycznia 2013, 13:34

Kompilator nie jest od wiedzenia, od wiedzenia czy coś gdzieś jest jesteś Ty ;) Kompilator tylko sprawdzi, czy nie ma błędów semantycznych i zamieni kod w czytelny dla komputera. Od podawania, gdzie co się znajduje jest programista.

Rozpisz sobie to na kartce jeśli nie rozumiesz pętli.

Idea jest taka, że losujesz kolejno liczby, a następnie porównujesz liczby, które już wylosowałeś z liczbą dopiero co wylosowaną.

Np. załóżmy, że mamy dane:

tab[0] = 1;
tab[1] = 5;
tab[2] = 46;

gdy wylosujesz nową liczbę np. tab[3] = 40 to porównujesz je z poprzednikami czyli tab[3] porównujesz z tab[0], tab[1], tab[2]. Zauważ, że zmienna "i" w wewnętrznej pętli się nie zmienia. tab[i] jest więc stałe dopóki nie skończy się wykonywanie wewnętrznej pętli i wynosi w tym wypadku tab[3], czyli 40, natomiast zmienna "j" się zmienia więc tab[j] to tab[0], tab[1], tab[2].
Morfidon
Administrator
Administrator
 
Posty: 1324
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48

Re: losowanie

Postprzez jawa » czwartek, 10 stycznia 2013, 23:13

A czy jest mozliwosc aby ten program uwzglednial poprzednie losowania tj poprzednie losowania byly w pliku txt. i zeby program wybral te najczesciej powtarzajace sie i jakby dodal losowo wylosowane z nich do glownego losowania..??
jawa
Bywalec
Bywalec
 
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: losowanie

Postprzez jawa » czwartek, 10 stycznia 2013, 23:32

jak mialoby to wygladac?
jawa
Bywalec
Bywalec
 
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23

Re: losowanie

Postprzez Morfidon » piątek, 11 stycznia 2013, 08:40

No to zapisuj dane wylosowane do pliku po losowaniu. A przy następnych losowaniach wybierz przed losowaniem wszystkie losowania z pliku i sprawdź to co się powtarza najczęściej i dodaj to co Co odpowiada. Nic Cię nie ogranicza.
Morfidon
Administrator
Administrator
 
Posty: 1324
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48

Re: losowanie

Postprzez jawa » piątek, 11 stycznia 2013, 14:03

kurcze nie mam pojecia jak sie za to zabrac ;-(
jawa
Bywalec
Bywalec
 
Posty: 43
Dołączył(a): sobota, 17 grudnia 2011, 13:23


Powrót do C++

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron