Другие языки программирования и технологии

Как же работает рандом?

как подпрограмма может создавать любые числа, я думаю она сложная. если не сложно, дайте программный код на паскале. спасибо. Беккиев Алим 11лет.
Merab Bolkvadze
Merab Bolkvadze
99
Она очень простая. Чаще всего делается так. Предыдущее число умножается на определенный коэффициент и добавляется еще одно число. Если полученное число чересчур большое, берется его остаток от деления на самое большее требуемое псевдослучайное число.
Этот метод называется линейным конгруэнтным методом генерации псевдослучайных чисел. Хорошие результаты дают далеко не все коэффициенты и добавляемые числа. "Хорошие" определяются различными методами теории чисел. В каждой реализации языка программирования используются свои коэффициент и добавляемое число, выбираемые разработчиком, они будут одни и те же для всех программ. По умолчанию начальное число для выработки первого псевдослучайного числа из последовательности берется нулем, но тогда всегда получалась бы одна и та же последовательность. Чтобы последовательности получались разными, в качестве начального числа обычно выбирается текущее время, в Паскале это делает процедура randomize.
Есть конечно, и другие методы. Например, берется какое-то число, возводится в квадрат (умножается само на себя) , из него берутся средние цифры, это и будет новое число. Из него опять берутся средние цифры.. . сказка про белого бычка. Опять же в качестве начального хорошо не всякое число - какие хороши, этим занимается математика, конечно, не школьная. Но, например, число Пи и кратные ему вполне подойдут.
Айдар Абрамов
Айдар Абрамов
97 334
Лучший ответ
static unsigned long int next = 1;

int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}

void srand(unsigned int seed)
{
next = seed;
}
Олег Сафин
Олег Сафин
11 082
может роддом?
Не совсем паскаль, но главное понять алгоритм)

int[] massiv = new int[10]; //Объявим массив чтобы было куда записать сгенерированные случайные числа
Random rnd = new Random(); //Функция Рандома
for (int i = 1; i < 11; i++) //Цикл на заполнение массива случайными числами от первого до десятого элемента массива
{
mas1 = rnd.Next(-100, 100); // заполнение массива случайными числами от -100 до 100
}

и ничего сложного, сложнее написать чтобы массив заполнялся просто по порядку)