HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Случайные числа [ Vc++ ]
  #1  
Старый 11.07.2007, 18:34
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


Question Случайные числа [ Vc++ ]

Интересует данная тема (Случайные числа в MVС++ и их генератор). В делфи имеется функция Random в паре с Randomize. Как быть с получением случайных чисел в VС++ ? Может есть свои методы или модули ? Подскажите плз, в каком направлении копать или у кого подобный вопрос уже решался и имеются наработки...

// Ну и для извращенцев, интересны технологии создания генератора

Последний раз редактировалось xqwerx; 11.07.2007 в 18:47..
 
Ответить с цитированием

  #2  
Старый 11.07.2007, 18:41
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

для псевдослучайных используют функцию rand() из RTL.
 
Ответить с цитированием

  #3  
Старый 11.07.2007, 19:16
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

xqwerx, вот тебе исходник по теме:
Код:
#include <windows.h>
#include <stdio.h>
unsigned long rs_randseed;

void _srand()
{
  rs_randseed = GetTickCount();
}

unsigned long _rand()
{
  rs_randseed++;
  return (rs_randseed*0xF02CE551) + 0x7FF2742B;
}
int main()
{
int a;
_srand();
a=_rand();
char *pa;
printf("This: ",itoa(a,pa,10));
return 0;    
}
 
Ответить с цитированием

  #4  
Старый 11.07.2007, 20:47
iv.
Познавший АНТИЧАТ
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Числа, которые генерируются обоими методами - не случайные. Для генерации числовой последовательности, близкой к случайной, используют специальные сложные железки + апи к ним.
 
Ответить с цитированием

  #5  
Старый 11.07.2007, 20:52
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

Ni0x С часиками интересно получилось! Главное фантазия А я то загонялся со стековым генератором ....
 
Ответить с цитированием

  #6  
Старый 11.07.2007, 20:57
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

iv. , я не говорю что получаются случайные числа, я вроде написал для псевдослучайных
 
Ответить с цитированием

  #7  
Старый 11.07.2007, 21:13
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

ТС: srand/rand читай описание к CRT.
 
Ответить с цитированием

  #8  
Старый 11.07.2007, 21:34
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Реализовать генератор можно проще... Rdtsc и все дела.
 
Ответить с цитированием

  #9  
Старый 11.07.2007, 22:37
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

смотря что понимать под случайностью. пусть надо сгенерировать "случайное" двухбайтное число (если меньше то отрубаем результат mod по границе, если например четырехбайтное то аналогично) не используя "железок". под случайным числом будем понимать результат 16-ти бит, такой что кол-во битов установленных в единицу в среднем будет никак не меньше битов установленных в ноль и более того, среднее количество "попаданий" в старший не должно быть меньше или больше чем в младший. полное равноправия битов в среднем, однако расположение их в текущий момент времени должно быть абсолютно случайно по этой причине, пример от Ni0x ну вообще не годится, хотя бы потому, что умножение на число ну никакой случайности не добавляет, а сложение и тем более на случайность выпадения битов. могу предложить только аналогичный вариант, но с циклическим сдвигом результата на половину слова (в данном случае на 8 бит) и двоичного сложения с первоначальным... потому что xor абсолютно демократичен как к 1 так и к 0, а сдвиг добавит равноправия между старшими и младшими битами.
 
Ответить с цитированием

  #10  
Старый 11.07.2007, 23:01
Aag
Познающий
Регистрация: 26.07.2005
Сообщений: 54
Провел на форуме:
47901

Репутация: 46
По умолчанию

Смотря, для каких целей. Если нужно статистическая случайность, то открываешь второй том Дональда Кнута "Искусство программирования" и узнаешь все что необходимо.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Брутер числа колонок MySQL _Great_ PHP 6 29.09.2008 17:23
Антивирус Касперского 7.0 увидит свет в 7 утра 7 числа 7 месяца 7 года ~!DoK_tOR!~ Мировые новости. Обсуждения. 23 31.05.2007 21:10
Прога для составления брут листа (только числа) Benzin Уязвимости Mail-сервис 4 15.05.2007 20:01



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ