losowanie liczb bez powtórzen - problem
Ostatnio zmodyfikowano 2016-10-31 09:32
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; }
|
|
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 ? |
|
« 1 » |