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

c++ funkcja losująca liczby prawdziwie losowe

Ostatnio zmodyfikowano 2019-12-01 12:07
Autor Wiadomość
pekfos
» 2019-11-30 16:50:59
Brzmi jakbyś chciał uzyskać losową permutację ciągu liczb 1, 2, ..., n. Są na to znacznie lepsze sposoby, niż twoje przekombinowane losowanie bez powtórzeń. Jeśli chcesz tylko uzyskać efekt, wypełnij tablicę kolejnymi liczbami i użyj std::shuffle(). Robienie tego ręcznie mogłoby wyglądać tak:
C/C++
#include <iostream>
#include <utility>
#include <cstdlib>
#include <ctime>

int main()
{
    const int n = 10;
    int tab[ n ];
   
    srand( time( NULL ) );
   
    for( int i = 0; i < n; ++i )
         tab[ i ] = i + 1;
   
    for( int i = 0; i < n; ++i )
         std::swap( tab[ i ], tab[ i + rand() %( n - i ) ] );
   
    for( int i = 0; i < n; ++i )
         std::cout << tab[ i ] << ' ';
   
}
i to samo z lepszym generatorem losowym i standardowymi algorytmami:
C/C++
#include <iostream>
#include <algorithm>
#include <random>
#include <ctime>

int main()
{
    const int n = 10;
    int tab[ n ];
   
    std::iota( tab, tab + n, 1 );
   
    std::mt19937 rng;
    rng.seed( time( nullptr ) );
    std::shuffle( tab, tab + n, rng );
   
    for( int i = 0; i < n; ++i )
         std::cout << tab[ i ] << ' ';
   
}
P-175698
Lewy1607
Temat założony przez niniejszego użytkownika
» 2019-12-01 12:07:19
Dziękuje za odpowiedź i przykłady lepszych algorytmów,kiedyś na pewno do nich wrócę jak nabiorę doświadczenia z czytania dokumentacji,póki co zostanę przy swoim bo mój przynajmniej rozumiem.Temat zamykam.
P-175707
1 « 2 »
Poprzednia strona Strona 2 z 2