dlatego SRAND jest nazywany generatorem liczb pseUdolosowych, poniewaz nie jest losowy :) liczby sa generowane na podstawie aktualnego STANU generatora. dla kazdego STANU, nastepna wygenerowana liczba jest STALA i DETERMINISTYCZNA, wyliczalna na podstawie -jakiegos- wzoru. po wygenerowaniu liczby, STAN jest modyfikowany wg. innego wzoru.
wszystko wyglada na losowe, poniewaz zwykle 'uzytkownik' generatora NIE ZNA stanu generatora w danej chwili.
STAN generatora jest nazywany rowniez ZIARNEM (SEED z ang.).
stad szybki wniosek: dla danego ustalonego SEED'a, nastepna liczba bedzie ZAWSZE taka sama, i nastepna po niej bedzie taka sama, etc
powtarzalnosc generatorow liczb psudolosowych jest 100%'owa, w tym lezy ich siła: sa idealne do powtarzania testow - dla danego seed'a masz zawsze dokladnie taki sam ciag 'losowych' danych, i slabosc: nie mozna ich stosowac tam gdzie naprawde-naprawde-naprawde-potrzebujemy-losowosci
w tym ostatnim przypadku stosuje sie INNE, prawdziwe zrodla losowosci, np:
- obserwowanie czestozmiennych w pakietach sieciowych
- obserwowanie ostatnich bitow okreslajacych pozycje myszki na ekranie
- itp
RAND na windowsie jest cienki i ma bardzo maly zakres - stala RAND_MAX bodajze ma 32768, wiec rand windowsowy potrafi generowac liczby 0..32767, i taki tez ma najwiekszy mozliwy cykl, a zaloze sie ze ma nawet mniejszy..
RAND na *nixie jest duzo lepszy, RAND_MAX to pelny zakres int32'a
na RAND'ach, mimo ze cienkie lub ciensze, mozna oprzec inny generator liczb, mocniejszy - patrz np. prosty w implementacji Mersenne' Twister (standardowo zwany MT_RAND, mtrand) - biblioteczke z jego darmowa wersja mozesz latwo na google znalezc. ale w dalszym ciagu jest to generator liczb PSEUDOlosowych, 100% powtarzalny dla danego seed'a, tylko - o lepszym rozrzucie i wiekszych cyklach
//edit @ johny bravo - podal linka do najprostszego mozliwego generatora pseudo-, to jest dokladny opis tego o czym pisal 'zabiłem kolegę na poligonie'