WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как мне НОРМАЛЬНО генерить случайные числа?!

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как мне НОРМАЛЬНО генерить случайные числа?!
Vovan опубликован 27-12-2001 21:09 MSK   Click Here to See the Profile for Vovan   Click Here to Email Vovan  
Как мне нормально генерить случайные числа?! А то rand() почему-то выдаёт далеко не случайные числа, и при повторном запуске комбинация случайных чисел повторяеться один в один! Почему так не пойму, пожалуйста обьясните!
server_mouse опубликован 27-12-2001 22:02 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Может попробуй это
http://www.sources.ru/NonCGI/Forum5/HTML/000083.html
SUnteXx опубликован 28-12-2001 00:07 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
Добавь в прогу строку типа: "srand( (unsigned)time( NULL ) );", должно заработать!
Oval опубликован 28-12-2001 07:06 MSK     Click Here to See the Profile for Oval  Click Here to Email Oval     
http://www.intel.com/design/chipsets/manuals/298029.pdf?iid=PCG+devside&
Romshtein опубликован 28-12-2001 14:19 MSK     Click Here to See the Profile for Romshtein  Click Here to Email Romshtein     
Еще есть вариант
Используя тек. время:
CTime t=CTime::GetCurrentTime();
int km=int(rand()-sqrt(rand()))+t.GetSecond()-t.GetMinute()+t.GetHour());
for(int i=-1;i<=km;i++)
rand();извращенно,но работает.
purpe опубликован 28-12-2001 15:18 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
поддерживаю SUnteXx! а использование тек. времени, это действительно извращение :)
Flex Ferrum опубликован 28-12-2001 15:31 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
К тому же не стоит так кипятиться по поводу того, что при одинаковом инициализирующем числе генератор ПСЧ генерирует одну и туже последовательность - иногда это можно очень эффективно использовать.
Valery опубликован 28-12-2001 19:32 MSK     Click Here to See the Profile for Valery  Click Here to Email Valery     
2Oval:
Посмотрел эту ссылочку. Ну и лажу интеля придумали :(
Oval опубликован 29-12-2001 05:58 MSK     Click Here to See the Profile for Oval  Click Here to Email Oval     
Почему? :))
Valery опубликован 29-12-2001 08:48 MSK     Click Here to See the Profile for Valery  Click Here to Email Valery     
Рекомендованное время выборки 1 байта не меньше 4,5 миллисекунд. Могли бы и пошустрее придумать, за это время можно даже достаточно качественную ПСП получить, с очень большой претензией на случайность.
Valery опубликован 29-12-2001 08:53 MSK     Click Here to See the Profile for Valery  Click Here to Email Valery     
Да еще с достаточно жесткими ограничениями на многопотоковость, рекомендуют работу с регистрами СЧ производить в критических секциях. То есть в критической секции будешь _ждать_ когда бит готовности установится в 1. Фигня. Сорри, редко бываю столь категоричным.
Oval опубликован 29-12-2001 10:16 MSK     Click Here to See the Profile for Oval  Click Here to Email Oval     
2Valery
Для реалтайм приложений и впрвду медленновато ждать.
Хотя можно по таймеру запрашивать с чуть большим временем чем 4мс.
Я еще не сильно с ним разбирался.
Oval опубликован 29-12-2001 10:34 MSK     Click Here to See the Profile for Oval  Click Here to Email Oval     
Писать по таймеру в циклический буфер, а приложение(в моем случае VSTi плагин) будет выбирать из него со своей скоростью.
Конечно генератор будет не поспевать за плагином. Но можно допустим сделать хитрый алгоритм - буфер 256 байт, а текущее значение кроме того и указатель на следующее число в буфере для выборки.
Вообще-то мне надо не байт а четыре то бишь float. Но должно и это получится.
С Новым Годом!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.