О генераторе случайных чисел
берешь числа -5, -4.99, -4.98, ..., +5, считаешь для них вероятность по гауссу, умножаешь каждое на большое число (чтобы получилось целое) и называешь их, допустим, P[-5], P[-4.99], ...
Потом берешь равномерно случайное целое на отрезке [0, Sum(P[j])], и выдаешь то j, в интервал (P[j], P[j+0.01]) у тебя попало это случайное
В среду постараюсь скинуть прогу на алголе.
GNU SL это уже умеет.
---
...Я работаю антинаучным аферистом...
2)Придумываешь такую фукнцию - отображение отрезка [0,1] на вещественную ось, которая превращает равномерное распределение в гаусса
случайные числа распределены по Гауссу с sigma=1 и <x> = 0.
r->Random возвращает случайные числа равномерно распределенные в промежутке [0,1).
double GaussRandom::Random {
static int iset = 0;
static double gset;
double fac, rsq, v1, v2;
if(iset == 0) {
do {
v1 = 2.0*r->Random - 1.0;
v2 = 2.0*r->Random - 1.0;
rsq = v1*v1+v2*v2;
} while (rsq >= 1.0 || rsq == 0.0);
fac = sqrt(-2.0*log(rsq)/rsq);
gset = v1*fac;
iset = 1;
return v2*fac;
} else {
iset = 0;
return gset;
}
}
Среднее - середина интервала, ясное дело. Как дисперсия связана с длиной интервала надо подумать.
Это самый простой и быстрый способ.
Это самый простой и быстрый способ.Может он и простой, но наверняка не самый быстрый.
самый простой - генерить phi - равномерно распределенное на [0;1) и r равномерно распределенное там же, тогда x=cos(2*pi*phi)*(1-log(r будет нормально распределено... кажись так.
Всем спасибо! Оказывается в Delphi есть такая функция, которая мне нужна. RandG называется. Ура!
А есть ли хороший несложный генератор случайных числел в целочисленной арифметике? Чтобы выдавал целые числа от 0 до 2^31 - 1. В алгоритме допустимы несложные команды(сложение, вычитание, сдвиг, возможно умножение недопустимы сложные (вроде деления) - чтобы на ассемблере можно было реализовать?
зато есть куча генераторов псевдослучайных числел. Как раз основанные на таких операциях. Google наверняка найдет то что тебе нужно
я вот знаю один, но хочу посмотреть другие
Предупреждаю всех на будущее: за скриншоты текстовой информации буду плюсовать.
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Elmor
Помогите, кто может! Нужно составить функцию, генерирующую случ числа. Так, чтобы наиболее вероятно функция выдавала ноль, менее вероятно числа близкие к нулю... В общем подчинялась гауссовскому распределению с заданной пользователем дисперсией.