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

[C++] Procentowa szansa na odpalenie funkcji

Ostatnio zmodyfikowano 2013-07-31 15:19
Autor Wiadomość
MonoMisiek
Temat założony przez niniejszego użytkownika
[C++] Procentowa szansa na odpalenie funkcji
» 2013-07-31 14:50:48
Piszę program, w którym na początku wprowadzam % szansy na wykonanie funkcji...
Problem w tym, że to działa niezadowalająco. np:
dla wpisanego 100%, funkcja się odpala realnie ~90% (z tego powodu zrobiłem zabezpieczenie, że 100% zamienia się na 5000...)
dla 50, wychodzi 30.
dla 70, wychodzi z 50.
Być może z punktu widzenia matematyki jest ok. Ale to odchylenie jest dla mnie za duże.

C/C++
cin >> szansa;
for( int i = 1; i < 2500; i++ )
{ if( szansa >= 100 ) { szansa = 5000; }
    int tempszansa =( rand() % 100 ) + 1;
   
    for( int iszansa = 1; iszansa <= szansa; iszansa++ )
    {
        if((( rand() % 100 ) + 1 ) ==( tempszansa ) )
        {
            mojafunkcja();
            suma++;
            break;
        }
    }
}

Zapewne taki sposób sprawdzania % do niczego się nie nadaje. Możecie jakiś pomysł podsunąć?
P-89107
Monika90
» 2013-07-31 15:06:18
C/C++
if( rand() % 100 < szansa )
     twojafunkcja();


albo
C/C++
std::random_device rnd_dev;
std::mt19937 urng( rnd_dev() );
std::bernoulli_distribution dist( szansa / 100.);
if( dist( urng ) )
     twojafunkcja();

P-89109
MonoMisiek
Temat założony przez niniejszego użytkownika
» 2013-07-31 15:19:33
łapię, dzięki
P-89110
« 1 »
  Strona 1 z 1