Re[2]: Randomize()
От: Кодт Россия  
Дата: 17.07.06 09:48
Оценка: 1 (1) +2
Здравствуйте, Testus, Вы писали:

T>Есть функция rand() для которой инициализация не нужна и она возращает unsigned long число.


Есть функция srand(int seed) которая как раз инициализирует ГСЧ (в противном случае при каждом запуске программы будет одна и та же последовательность).
Самый простой способ — это сделать srand(time()). Если программа запускается чаще, чем раз в секунду — или в ней одновременно стартуют несколько потоков — то можно в качестве семечка использовать ещё и ID потока (это уже ОС-зависимо, для виндов ::GetCurrentThreadID()) — что-то вроде srand(time() + GetCurrentThreadID() + (++g_count)).

T> Если тебе нужны какие либо вариации типа random(100) то тут уже сам придумывай я всегда делал rand() % 100.


Получится не совсем равномерное распределение, ну да и так сойдёт. Если же хочется ГСЧ с чётко оговоренными характеристиками — то проще своё написать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.