• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[c++]losowość z prawdopodobieństwem

Object Storage Arubacloud
0 głosów
1,730 wizyt
pytanie zadane 6 listopada 2017 w C i C++ przez Dorian Bajorek Dyskutant (7,920 p.)
Witam,chcę napisać program aby użytkownik podawał prawdopodobieństwo wygranej a komputer na podstawie tego prawdopodobieństwa podawał czy użytkownik wygrał czy też przegrał.Dla prawdopodobieństwa 100% wygrana będzie za każdym razem,dla 0% będzie zawsze przegrywał,dla 50% będzie raz wygrywał raz przerywał (równe szanse na wygraną i na przegraną),a jeszcze np dla 25% będzie częściej (statystycznie) przegrywał niż wygrywał,logiczne pewnie wiecie o co chodzi.Jak takie coś napisać aby działało dla każdej liczby całkowitej z przedziału od 0 do 100(%).

3 odpowiedzi

+2 głosów
odpowiedź 6 listopada 2017 przez Radfler VIP (101,030 p.)
wybrane 6 listopada 2017 przez Dorian Bajorek
 
Najlepsza

Mam taki sposób:

1. Użytkownik podaje prawdopodobieństwo z przedziału [0, 100] (niech będzie to p),

2. Program losuje liczbę całkowitą z przedziału [1, 100] (niech będzie to k),

3. Dla k<=p następuje wygrana, w przeciwnym razie przegrana.

A najlepiej to użyć tego.

komentarz 6 listopada 2017 przez Dorian Bajorek Dyskutant (7,920 p.)
Dzięki,działa.Gdy daje sobię prawdopodobieństwo 50. klikam klikam wystakuje jakoś przez 10razy wygrana a potem podobnie przegrana.Dlaczego tak się dzieje,jest to spowodowane tym że to jest pseudo losowanie ?
komentarz 6 listopada 2017 przez Radfler VIP (101,030 p.)
Raczej tak.

Jeszcze z ciekawości zapytam: jakiej metody losowania używasz? Nagłówka <random> czy funkcji std::rand?
komentarz 8 listopada 2017 przez Dorian Bajorek Dyskutant (7,920 p.)
biblioteka time.h

metoda srand,nie wiem czy dobra ale taką znałem więc użyłem
+1 głos
odpowiedź 6 listopada 2017 przez the_danger Gaduła (4,800 p.)
#include <iostream>
#include <random>

int main() {
  int probability{};
  std::cin >> probability;

  std::mt19937_64 rd{ std::random_device{}() };

  std::uniform_int_distribution<int> dstr{1, 100};

  if(dstr(rd) <= probability) {
    std::cout << "Wygrana\n";
  }
  else {
    std::cout << "Przegrana\n";
  }

}

 

+1 głos
odpowiedź 6 listopada 2017 przez obl Maniak (51,280 p.)
Trochę wymuszona ta statystyka, ale ja to widzę tak:

Jeżeli ustawiasz prawdopodobieństwo na 99% to musisz ułożyć sobie tablicę 100 elementów typu bool. teraz losowo określasz numer losowania, które wygrywa aż do osiągnięcia tych 99 elementów ustawionych na true (n-ty indeks tablicy oznaczać będzie n-te losowanie). Dla prawdopodobieństwa 50% wystarczy tablica 2-elementowa. Jedyny problem to ustalenie rozmiaru tablicy.

Podobne pytania

0 głosów
2 odpowiedzi 852 wizyt
pytanie zadane 20 lipca 2019 w JavaScript przez mknnn221 Początkujący (460 p.)
0 głosów
2 odpowiedzi 1,267 wizyt
pytanie zadane 25 października 2017 w Java przez Neron Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 801 wizyt
pytanie zadane 20 maja 2017 w JavaScript przez bobobob Użytkownik (790 p.)

92,580 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...