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

losowanie liczb bez powtórzen - problem

Ostatnio zmodyfikowano 2016-10-31 09:32
Autor Wiadomość
thomson92
Temat założony przez niniejszego użytkownika
losowanie liczb bez powtórzen - problem
» 2016-10-30 13:46:15
Witam, program losuje wybraną ilość liczb nie powtarzając ich jednak kiedy dam przedział liczb np. 10-20 i chce losować 11 to skrypt nie działa poprawnie. Czy mogę liczyć na jakąs podpowiedz.


#include <iostream>
#include <cstdlib>
#include <ctime>

        bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
        {
         if( ile <= 0 )
         return false;
         int i = 0;
         do
            {
                if( tab[ i ] == iLiczba )
                     return true;
              
                i++;
            } while( i <= ile );
          
            return false;
        }
        int wylosuj(int x, int y)
        {
            return( rand() % (y - x) + x) ;
        }
       
   
      
        int main()
        {
            int x, y, z, l, losowania;
            int wylosowane[ 100 ];
            losowania = 0;
          
            std::cout << losowania;
          
        do{

        std::cout << "Od jakiej liczby zaczac?: ";
        std::cin >> x;
                  
        std::cout << "Na jakiej licznie skonczyc?: ";
        std::cin >> y;
                  
        std::cout << "Ile liczb wyswietlic?";
        std::cin >> z;

                  
        srand( time( 0 ) );
                  
        int wylosowanych = 0;
                  
           do
           {
            losowania++;
            int liczba = wylosuj(x, y);
            if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
              {
               wylosowane[ wylosowanych ] = liczba;
               wylosowanych++;
               }
                 } while( wylosowanych < z );
                  
                    wylosowanych = 0;
                    do
                    {
                    std::cout << wylosowane[ wylosowanych ] << std::endl;
                    wylosowanych++;
                    } while( wylosowanych < z );
                  
                  
                  
                }while(losowania>l);
              
                return 0;
        }
P-153052
michal11
» 2016-10-31 09:32:04
A w jaki sposób chcesz wylosować 11 liczb bez powtórzeń z przedziału który ma 10 elementów ?
P-153090
« 1 »
  Strona 1 z 1