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() ??
W skrócie, aby wynik był uznany za losowy:
- Musi go cechować określony rozkład statystyczny (najczęściej: otrzymanie dowolnej wartości następuje z takim samym prawdopodobieństwem)
- 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.
int getRandom()
{
return 4; // chosen by fair dice roll
// guaranteed to be random
}
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.