Liczniki i w losowej kolejnosci bez powtorzen
Ostatnio zmodyfikowano 2015-03-07 14:57
aksen |
» 2015-03-07 03:21:43 moze sie zdarzyc tak ze 2x wylosuje ta sama komorke i co wtedy ;P? |
Wtedy np. komórka o indeksie np tab[0] będzie zawierała liczbę 1 (która pojawi się tam gdzie była na początku). A kto powiedział , że w komórce tab[0] nie może być liczby 1? To losowanie, więc tam może pojawić się dowolna liczba. |
|
aksen |
» 2015-03-07 03:36:46 Już jest, nie na co czekać do rana: (w końcu to program na 5-10 minut pisania) #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
inline int losuj( int a, int b ) { return a + rand() %( b - a + 1 ); }
int main() { const int ilosc_liczb = 100; int tab[ ilosc_liczb ]; srand( time( NULL ) ); for( int i = 0; i < ilosc_liczb; i++ ) tab[ i ] = i + 1; for( int i = 0; i < ilosc_liczb; i++ ) swap( tab[ i ], tab[ losuj( 0, ilosc_liczb - 1 ) ] ); for( int i = 0; i < ilosc_liczb; i++ ) cout << tab[ i ] << ", "; system( "pause" ); return 0; }
|
|
aksen |
» 2015-03-07 11:53:08 W sumie losowanie tu jest tak proste, że wyrzucenie funkcji "losuj" tylko uprości programik: (prościej chyba już się nie da) #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int main() { const int ilosc_liczb = 100; int tab[ ilosc_liczb ]; srand( time( NULL ) ); for( int i = 0; i < ilosc_liczb; i++ ) tab[ i ] = i + 1; for( int i = 0; i < ilosc_liczb; i++ ) swap( tab[ i ], tab[ rand() % ilosc_liczb ] ); for( int i = 0; i < ilosc_liczb; i++ ) cout << tab[ i ] << ", "; system( "pause" ); return 0; }
|
|
kynol Temat założony przez niniejszego użytkownika |
» 2015-03-07 14:57:24 Wiem, juz w nocy skminilem ten twoj program i napisalem podobny :)) |
|
1 2 « 3 » |