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

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

0 głosów
2,286 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,300 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 1,261 wizyt
pytanie zadane 20 lipca 2019 w JavaScript przez mknnn221 Początkujący (460 p.)
0 głosów
2 odpowiedzi 1,551 wizyt
pytanie zadane 25 października 2017 w Java przez Neron Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 1,015 wizyt
pytanie zadane 20 maja 2017 w JavaScript przez bobobob Użytkownik (790 p.)

93,631 zapytań

142,556 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...