Wpis z mikrobloga

@knifeman:
@Defined:
z tego co wiem cstdlib to jest wersja dla c++, a stdlib był z c. tak jak z math.h vs cmath, i time.h vs ctime. a jak pod generator podpiąć zmienianie wartosci co odpalenie programu? bo do tej pory działa mi to tak, że za pierwszy razem wylosuje mi np 7, potem tez 7, 7 7 etc.
  • Odpowiedz
std::defaultrandomengine generator;
std::uniformintdistribution distribution(1,6);
int dice_roll = distribution(generator); // generates number in the range 1..6

do tej pory robilem cos takiego
  • Odpowiedz
@Hauleth: noooo, do wylosowania liczby, tylko tyle potrzebuje, nie wiem czym sie różnią, ale wiem że często jak użyje cstdlib, to mimo ze wszystko działa jak powinno, to rabini mnie zjedzą
  • Odpowiedz
@RedveKoronny: LCG używany w rand() jest bardzo prymitywny i daje słabe wyniki, ale jest szybki. Dodatkowo trzeba pamietać, że nie jest on thread-safe oraz rand() % (max + 1) daje niejednorodny rozkład. Ogólnie to wszystko zależy czy chcesz mieć "prawdziwszą" losowość, czy szybsze wyniki. PCG ma na swojej stronie lekko stronniczą tabelkę porównującą algorytmy.
  • Odpowiedz
@RedveKoronny: w random masz wiele silnikow. Mt19937 jest chyba najbatdzoej znany ale wolny daje jednak dobre rezultaty przy metodach monte carlo. Jak piszesz na architekture x86_64 to wyprobuj czegos co uzywa RDRAND.
  • Odpowiedz