Losowanie liczb

0

Mam pytanie .
Czy w C++ jest możliwość losowania liczb ale losowych a nie pseudo-losowych tak jak to było za pomocą funkcji rand() ??

0

W skrócie, aby wynik był uznany za losowy:

  1. Musi go cechować określony rozkład statystyczny (najczęściej: otrzymanie dowolnej wartości następuje z takim samym prawdopodobieństwem)
  2. Nie możemy być w stanie z pełną pewnością określić na podstawie poprzednich wyników, jaki będzie wynik następny.

Jeżeli więc znajdziemy w obrębie platformy odpowiednie źródło wartości losowych, to jesteśmy w stanie przekonwertować dane z niego na liczby losowe. Standardowe mechanizmy C++ nie oferują tego typu wsparcia. Możliwe jest jednak wykorzystanie zewnętrznych bibliotek czy usług, na przykład jeżeli możemy uzyskać połączenie z internetem: http://www.random.org/

Źródłem wartości losowych może być na przykład radio. Jeżeli jesteśmy w stanie odczytywać pliki, o których wiemy, że posiadają losową zawartość (nagrania audycji radiowych), to nic nie stoi na przeszkodzie aby za pomocą bibliotek standardowych C++ użyć ich. Możemy także poprosić użytkownika o wygenerowanie jakichś losowych działań - na przykład aby naciskał losowe klawisze. Musimy jednak pamiętać, że nawet prawdziwie losowe wartości nie biorą się znikąd. Stąd też rodzi się ważna uwaga: nasza wartość może być losowa dla nas ponieważ nie mamy wystarczającej wiedzy o źródle, ale kto inny już taką posiadać może.

Skłaniałbym się więc ku następującej odpowiedzi: przy użyciu C++ da się generować liczby losowe, jednak nie ma w jego obrębie żadnej biblioteki ani metody wbudowanej która nazywałaby się getTrulyRandomNumber.

3
int getRandom()
{
 return 4; // chosen by fair dice roll
           // guaranteed to be random
}
0

Stąd też rodzi się ważna uwaga: nasza wartość może być losowa dla nas ponieważ nie mamy wystarczającej wiedzy o źródle, ale kto inny już taką posiadać może.
Pozwolę sobie się nie zgodzić. Liczba jest losowa niezależnie od tego czy o tym wiemy czy nie.

Rzeczywiście, ktoś mógłby zbudować czarną skrzynkę ze zwykłym rand() w środku a mówić że to generator liczb prawdziwie losowych, ale nie oznacza to że dla nas one będą losowe, a tylko o tym że ktoś nas robi w konia.

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