В ответ на мой собственный вопрос, вот пользовательская функция MySQL, которая возвращает одно случайное значение, выбранное из распределения Гаусса с заданным средним и стандартным отклонением.
DROP FUNCTION IF EXISTS gauss;
DELIMITER //
CREATE FUNCTION gauss(mean float, stdev float) RETURNS float
BEGIN
set @x=rand(), @y=rand();
set @gaus = ((sqrt(-2*log(@x))*cos(2*pi()*@y))*stdev)+mean;
return @gaus;
END
//
DELIMITER ;
Чтобы убедиться, что это на самом деле возвращает распределение Гаусса, вы можете сгенерировать их серию, а затем построить гистограмму:
create temporary table temp (id int, rando float);
insert into temp (rando) select gauss(2,1); # repeat this operation 500 times
insert into temp (rando) select gauss(2,1) from any_table_with_500+_entries limit 500;
select round(temp,1), count(*) from temp group by round(temp,1) # creates a histogram
Если вы построите эту гистограмму в Excel или на другом графическом инструменте, вы увидите нормальную кривую в форме колокола.