ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

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

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

  #1  
Старый 07.10.2007, 23:31
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

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

inv, надеюсь я правильно тебя понял.
Код:
#include <windows.h>

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

unsigned long _rand()
{
           rs_randseed++;
           return (rs_randseed*0xF02CE551) + 0x7FF2742B;
}

unsigned int __stdcall Base(PVOID pArg)
{
         int a = 0;
         char pa[12];
         _srand();
         a=_rand() % 1000;
	 itoa(a, pa, 10);
	 MessageBox(0, pa, "Hi", 0);
	 return 0;
}
	 

int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	HANDLE hHan[9];
	for(int i; i<9; i++)
	{
	    hHan[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Base, 0, 0, 0);
	}
	
	WaitForMultipleObjects(9, hHan, TRUE, INFINITE);
	
	for(int j; j<9; j++)
	{
		CloseHandle(hHan[j]);
	}

	return 0;
}

Последний раз редактировалось Ni0x; 07.10.2007 в 23:39..
 

  #2  
Старый 08.10.2007, 01:33
inv
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме:
951141

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

Цитата:
#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;
}

unsigned int __stdcall Base(PVOID pArg)
{
int a = 0;
char pa[12];
_srand();
a=_rand() % 1000;
itoa(a, pa, 10);
printf("<%s>\n",pa);
return 0;
}


int main()
{
HANDLE hHan[9];
for(int i=0; i<9; i++)
{
hHan[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Base, 0, 0, 0);
}

WaitForMultipleObjects(9, hHan, TRUE, INFINITE);

for(int j=0; j<9; j++)
{
CloseHandle(hHan[j]);
}

return 0;
}
одинаковые числа=\с мессаджами не одинаковые само собой так как там время тратится на окошки
смысл не в этом...смысл во времени
может использовать другую псевдослучайную посл...

*********
проблему решил,использовал псевдо случпоследовательность(не зависит от времени) ,иницилизировал временем.

Последний раз редактировалось inv; 08.10.2007 в 05:54..
 

  #3  
Старый 08.10.2007, 07:01
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
rs_randseed++;
Алгоритм такой должен быть - rand_init() просто сохраняет в переменной значение GetTickCount(), а далее каждый раз, вызваная rand()-ф-ия искривляет его, например, умножает на 0xf25a0cb2 и т.п. и возвращает. Тогда значения будут разными. А у тебя зачем-то на единицу увеличивается, а потом от нее считается. Можно было бы додуматься. И ещё, не юзайте там лишнего всяких умножений, а то потом rand()-ф-ии будут занимать времени больше, чем все потоки вместе взятые
О чем тут ещё можно говорить?
 

  #4  
Старый 08.10.2007, 07:15
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме:
165671

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

Много всяких случайностей еще можно придумать кроме времени для инициализации: состояние памяти в каком-нибудь месте, уровень входного звукового сигнала, загруженность процессора, количество занятой оперативной памяти и т.д. Можно это все как-то комбинировать и получить генератор больменее случайных чисел без всяких железяк. Только тогда надо будет не инкрементить rand_seed (или умножать его на что-то там и т.д.), а так же его постоянно откуда-то рандомно получать. Хотя функция тогда будет занимать много времени...

Great: Ммда ))) ZaCo, +1

Последний раз редактировалось _Great_; 12.10.2007 в 00:42..
 

  #5  
Старый 08.10.2007, 10:58
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

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

Советую посмотреть PWGen 1.40 Sources...
 

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

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

Kez, алгоритм не мой, я просто разместил объяву. Согласен - нетемовый, исправим.
 

  #7  
Старый 12.10.2007, 00:09
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

я же написал в первом посте этой теме - главное это ЧТО в СВОЕЙ программе ВЫ считаете случайным числом. не понимаю, зачем нужно формирование "случайной" последовательности наиболее близкой к жизненной, человеку, скорее всего, не занимающимся созданием ключей для шифрования? и то - взять тот же стеганос, он сам просит пользователя рандомно повозить мышкой по экрану или постучать по клавиатуре
для игр - существуют алгоритмические способы формирования таких последовательностей с равномерным распределением значений по множеству int чисел, все это описано у кнута.
--
куда интереснее было бы почитать про анализ алгоритмически-построенной последовательности на "случайность" и про возможное предположение о продолжении последовательности.
 

  #8  
Старый 12.10.2007, 17:28
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме:
165671

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

Псевдослучайное число это значит число, которое на самом деле не случайное и при знании алгоритма функции rand и начальных условий можно восстановить всю цепочку вызовов этой функции, а если знать как окргуляли эти числа, то случайными они уже никак не будут.
А случайные числа это те, у которых практически невозможно предсказать начальные условия (в худшем случае) или те, у которых вообще нет начальных условий (т.е. с учетом состояния рандомизирующих элементов генерируется всякое случайное число), разумеется в большинстве случаев это совершенно ненужно, я даже плохо представляю когда это может понадобиться.
 

  #9  
Старый 12.07.2007, 20:02
Lamia
Участник форума
Регистрация: 11.07.2007
Сообщений: 190
Провел на форуме:
254313

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

Цитата:
Сообщение от Ni0x  
Lamia, я не говорю что на asm генератор будет хуже, я своим высказыванием имел ввиду, что написать генератор случайных чисел очень сложно на любом языке, даже более того, почти невозможно.
А я и не спорю!Именно случайных....
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Антивирус Касперского 7.0 увидит свет в 7 утра 7 числа 7 месяца 7 года ~!DoK_tOR!~ Мировые новости. Обсуждения. 23 31.05.2007 21:10



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


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




ANTICHAT.XYZ