Metoda na prawdopodobieństwo z określoną liczbą procent

0

Witajcie ponownie.

Macie może dla mnie pewnego hinta - jakąś metodę na obliczenie TAK/NIE względem danego PROCENTU PRAWDOPODOBIEŃSTWA?

Bo np. mam 60% na powodzenie akcji i chcę, aby na podstawie tego procentu dało mi odpowiedź UDAŁO SIĘ/NIE UDAŁO SIĘ.

Macie sposób?

0
von_ilnicki napisał(a)

Bo np. mam 60% na powodzenie akcji i chcę, aby na podstawie tego procentu dało mi odpowiedź UDAŁO SIĘ/NIE UDAŁO SIĘ.

Wygooglaj sobie "logika rozmyta" ("fuzzy logic").
Skoro jednak ma to być odpowiedź "tak" lub "nie" (bez stanów pośrednich), to najprościej będzie określić próg, po przekroczeniu którego uznajemy, że dana operacja się udała. To jest tak banalne, że obawiam się iż chodziło Ci o coś innego.

0

z progu dawno korzystam (losuje liczbę w przedziale 1-100 i określam, czy jest powyżej procentu - jeśli tak, zwracam odp. TAK i vice versa). Ta metoda jednak ma dziwną wadę i dla procentów powyżej 50 funkcja niemal zawsze zwraca wartość TAK. Szukam innego sposobu.

0

Jeśli określiłeś próg na 50, to chyba logiczne że wszystko powyżej będzie zwracało TAK.
Chyba nie rozumiem o co Ci dokładnie chodzi...

0

Dobra, porzućmy temat progu bo i ty mnie źle zrozumiałeś. Na czym polega fuzzy logic?

0

Kolego, trochę samodzielności! Możesz zacząć od tego: http://en.wikipedia.org/wiki/Fuzzy_logic

0

opracowałem coś takiego:

srand (static_cast<unsigned int>(time(NULL)));

                        int Liczba = rand() % 100 + 1;

                        if (Liczba <= procent)

                        {

                                    cout << "POWODZENIE." << endl;

                        }

                        else

                        {

                            cout << "NIEPOWODZENIE." << endl;

                            cin.sync(); cin.get();

                        }

ale myślałem nad czymś... lepszym (choć dalej tylko z prawda/fałsz). Bo coś nie wierzę, by choćby twórcy fallouta z takiego korzystali (było dla przykładu taki atrybut "perswazja", miał wartość od 1-100 i w rozmowie można było z niego skorzystać, by osoba coś dodatkowo wygadała ciekawego - a obok kwestii perswazji był procent prawdopodobieństwa powodzenia). Macie jakieś podejrzenia, z jakiego "systemu" korzystali?

0

Ach, już czaję o co Ci chodzi. To olej ten fuzzy logic. Jeśli piszesz grę, to najlepiej symulować rzuty kostką. Dajmy na to, określasz "rzut kostką sześcienną; 1-4 TAK". Oczywiście, kostka może mieć dowolną liczbę "ścianek", dobrze jednak jest się trzymać kostek "systemowych" w przypadku gier.

0

I dodatkowo nie używaj modulo przy randzie, szczególnie używając systemu zgodnego ze standardem POSIX. Nie da się zrobić dobrego generatora wszystkich bitów o 231 możliwych wartościach używając 32 bitowego stanu, więc używa się generatorów dających dobry rozrzut od 0 do 231, ale mających bardziej losowe wysokie bity (bo są ważniejsze). Szczególnie źle przy modulo się sprawdza rand() z mingw.

Przy grze możesz także nagiąć losowość, żeby gra była fajniejsza, np. gdy dostaniesz pod rząd 3 legendarne kije dla maga i grasz wojownikiem, to potem się pojawi coś dla twojej klasy, albo po 4 pudłach przy szansie 80% na trafienie trafiasz zawsze.

Ogólnie problem liczb pseudolosowych jest bardzo dobrze opisany w Sztuce programowania Knutha, radzę poświęcić parę dni na zapoznanie się z tym. Ogólnie cały cykl jest bardzo dobry, choć trochę ciężki, podejście może się wydawać trochę przestarzałe ("po co mi assembler jak programuje w Ruby"), ale tematy w nim poruszane są podstawą informatyki i nie wydaje mi się, że się zdezaktualizują. Na przykład nie musisz wiedzieć jak napisać dobry generator liczb pseudolosowych, ale powinieneś wiedzieć jak one działają, żeby dobrze z nich korzystać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1