Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> rand В Windows 
:(
    Опции темы
devmstr
Дата 28.3.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Какая есть замена для rand в Windows, так как stdlib в виндомов приложении, как - то не хочется!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Nastya
Дата 29.3.2005, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



Код

#include <stdlib.h>
#include <time.h>

........
srand(time(NULL));




--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
chipset
Дата 29.3.2005, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



magician, а в чём проблема написать свою, вычисляющую рандом перемножением серийного номера коврика от мыши и текущего времени в Нью Йорке? smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
srd
Дата 29.3.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 4
Всего: 49



Даже виндовое приложение линкуется с CRT, и отвязаться от неё без извращений нельзя. Потому можешь совершенно спокойно использовать <cstdlib>


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
devmstr
Дата 30.3.2005, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



srd Спасибо!
Ща юзаю

#define RAND_MAX 0x7fff
#define rand() ((int)((0xDEADBEEF*GetTickCount()+0xBABA)%RAND_MAX))

Нескожу что лучше стандавтного, но работает!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
oleg1973
Дата 30.3.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Цитата
Даже виндовое приложение линкуется с CRT, и отвязаться от неё без извращений нельзя

не правда
а рандом можно из GetTickCount сотворить


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 30.3.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 2
Всего: 110



Цитата
Даже виндовое приложение линкуется с CRT, и отвязаться от неё без извращений нельзя

Цитата
не правда

нечего тут спорить: у вас просто разные понимания слова "извращение" smile
просто GetTickCount не всегда хорошо - кто его знает, с какой периодичностью будут вызывать эту функцию? может так нехорошо получиться, что значения совсем не будут похожи на случайные
обычно делают так:
1. используют GetTickCount один раз при старте программы для инициализации генератора случайных чисел
2. при каждом вызове применяют к глобальной переменной преобразование (именно ним генераторы и отличаются) и выдают либо эту переменную, либо какую-то функцию от нее

здесь на форуме есть несколько тем, где было обсуждение различных генераторов случайных чисел...


--------------------
qqq
PM WWW   Вверх
Void
Дата 30.3.2005, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: нет
Всего: 173



Цитата(maxim1000 @ 30.3.2005, 16:57)
просто GetTickCount не всегда хорошо - кто его знает, с какой периодичностью будут вызывать эту функцию? может так нехорошо получиться, что значения совсем не будут похожи на случайные


Есть еще вариант - использовать CryptoAPI. Может быть, из пушки по воробьям, зато уж точно никакой закономерности:

Код

DWORD MyRandom(void) {
    DWORD result;
    HCRYPTPROV hProv;
    if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, NULL)) {
        CryptGenRandom(hProv, sizeof(DWORD), (BYTE*) &result);
        CryptReleaseContext(hProv, NULL);
    }
    return result;
}


В случае ошибки вернет просто неслучайный мусор из стека, но это маловероятно.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
devmstr
Дата 30.3.2005, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Цитата(Void @ 30.3.2005, 18:34)
CryptGenRandom

Глючная она. Намучался я с ней в свое время!!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Void
Дата 31.3.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: нет
Всего: 173



Цитата(magician @ 30.3.2005, 23:22)

CryptGenRandom
Глючная она. Намучался я с ней в свое время!!

А в чем конкретно глючность заключается, можно узнать?


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.