В Matlab есть функция, которая генерирует случайные действительные числа в интервале времени. Я нашел что-то с unifrnd()
, но он генерирует числа в открытом интервале. Если я использую unifrnd(x,y);
, я получаю интервал (x, y) вместо [x, y].Функция Matlab, которая генерирует случайные вещественные числа в замкнутом интервале
3
A
ответ
3
Учитывая обсуждение точности в комментариях, вы можете использовать что-то вроде:
mag = floor(log10(y - x))
num = unifrnd(x-(10^mag)*eps, y+(10^mag)*eps)
Это существенно добавляет один «точку» в дискретный интервал представления, с учетом точности на основании размера номера, которые вы используете. unifrnd()
по существу является оберткой вокруг rand()
(что означает, что вам не нужен набор инструментов статистики, чтобы сделать это), и, таким образом, это просто масштабирование равномерного распределения по (0,1). Если вы беспокоитесь о конечных точках, это важно, потому что вы не можете получить более гранулированный, чем продукт, размер вашей длины интервала с eps
.
Можете ли вы даже сказать разницу, кроме того, в тривиальном случае? (т. е. где ваш интервал является одной точкой). Разве вероятность бесконечности бесконечных конечных точек для реалов? – hiandbaii
Да, я знаю, но я должен учитывать эти случаи. Это проблема. –
На самом деле математическая вероятность выбора какой-либо конкретной точки, включая конечные точки, из непрерывного интервала равна 0. @hiandbaii правильна ... математической разницы нет. Цифровое представление чисел означает, что на самом деле компьютер выбирает из дискретного распределения с максимальным разрешением около 1e-16, поэтому, если вы работаете на интервале '[0,1]', vs '(0 , 1) ', вам нужно было бы запустить около' (10^16)/2' проб, чтобы заметить разницу. – gariepy