normalz писал(а):
Подскажите пожалуйста как построить набор из 1000 чисел в котором числа будут от 0 до 100. Чтобы этот набор как можно сильнее был похож на нормальный. Никак не соображу как это сделать плотность распределения у нас же для непрерывной переменной а тут дискретное. Дело осложняется тем что мне нужно в общем виде без интегралов.
Так как эту последовательность нужно запрограммировать и запихнуть в таблицу БД.
Ну, с дискретностью просто -- видимо, предполагалось составить последовательность вещественных числел, а потом округлить.
Правда, нюанс. Какова сигма? Если, по умолчанию, единичка, то практически все числа окажутся от нуля до трёх (ну или от 47 до 53, если сместить центр), так что сходство с нормальным будет весьма условным.
Поскольку речь о составлении базы, эффективность программы не важна и можно воспользоваться универсальным методом приёма-отклонения. Генерируем последовательность пар
, где
и
равномерно. Если оказывается
, то данная точка
принимается и заносится (после округления) в таблицу. И так до тех пор, пока не накопятся требуемые 1000 точек.
Если всё же нужна эффективность, то можно воспользоваться стандартным алгоритмом для именно нормального распределения. Основанным на том, что для нормально распределённых точек на плоскости расстояния до центру распределены по показательному закону, а он легко обращается. Генерируем два равномерно распределённых числа:
и
. Берём
и
. Эти два числа будут распределены независимо и нормально (сигму не помню, а считать лень).