• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Оптимизация генератора псевдослуч. чисел rand()

  • Автор темы gnu
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

gnu

Пишу на СИ.

функцией rand генерирую числа вплоть до 2^32 - 1 -- RAND_MAX (это очень большое число), ненужные отбрасываю (циклом, пока не дойду до нужых, а нужные, это меньшие 50ти. Как эффективно мне их генерировать. А то уж очень дооолго. А нужно Ооочень эффективно, т.к. используется часто и много.
 
?

????

Молодец :blink:
Как я понял, на Turbo C 3.X (2.X). Если так, то посмотри stdlib.h. Там есть вот такое:
Код:
int _Cdecl random(int __num)
        { return(int)(((long)rand()*__num)/(RAND_MAX+1)); }
Там же (в stdlib.h)
Код:
#define RAND_MAX 0x7FFFU

В справке по ТС есть пример

Код:
 int main(void)
{
  int i;

  printf("Ten random numbers from 0 to 99\n\n");
  for(i=0; i<10; i++)
   printf("%d\n", rand() % 100);
  return 0;
}
 
G

Guest_LeXXaT

Если нужно генерить числа от 0 до N то пиши так:
rand()%(N+1) // операция остаток от деления
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!