При запуске в R runif(100,max=0.1, min=1e-10)
я получаю 100 равномерно распределенные случайные величины между 0,1 и 0,0001. Таким образом, нет никакого случайного значения от 0,0001 до минимального значения (min=1e-10
).
Как создать равномерные случайные величины на всем интервале (между значениями min и max)?Генерация равномерной случайной величины, когда нижняя граница близка к нулю
ответ
(ред заменить exp(-10)
с 1e-10
)
Учитывая ваш макс 0.1
и мин 1e-10
, вероятность того, что любое данное значение меньше 1e-4
дается
(1e-4 - 1e-10)/(0.1 - 1e-10) = 9.99999e-04
Вероятность что 100 случайных величин из этого распределения все больше 1e-4
составляет
(1 - 9.99999e-04)^100 = 0.90479
Около 90,5%. Поэтому вы не должны удивляться, что в розыгрыше 100 номеров из этого дистрибутива вы не видели меньше 1e-4
. Это теоретически ожидается более 90,5% времени. Мы даже можем проверить это в моделировании:
set.seed(47) # for replicability
# 100,000 times, draw 100 numbers from your uniform distribution
d = replicate(n = 1e5, runif(100, max = 0.1, min = 1e-10))
# what proportion of the 100k draws have no values less than 1e-4?
mean(colSums(d < 1e-4) == 0)
# [1] 0.90557
# 90.56% - very close to our calculated 90.48%
Для большей точности, мы можем повторить с еще большим количеством репликаций
# same thing, 1 million replications
d2 = replicate(n = 1e6, runif(100, max = 0.1, min = 1e-10))
mean(colSums(d2 < 1e-4) == 0)
# [1] 0.90481
Так, с 1мм репликаций, runif()
почти точно соответствует ожиданиям. Он отклоняется от ожидания на 0.90481 - 0.90479 = 0.00002
. Я бы сказал, что нет абсолютно никаких доказательств того, что runif
не работает.
Мы можем даже построить гистограммы для некоторых повторений. Вот первые 20:
par(mfrow = c(4, 5), mar = rep(0.4, 4))
for (i in 1:20) {
hist(d[, i], main = "", xlab = "", axes = F,
col = "gray70", border = "gray40")
}
Гистограммы показывают 10 бар каждый, так что каждый бар составляет около .01
шириной (так как общий диапазон составляет от около 0,1). Диапазон, который вас интересует, составляет около 0.0001
широкий. Чтобы увидеть, что в гистограмме нам нужно построить 1000 баров за сюжет, в 100 раз больше баров. Использование 1000 ящиков не имеет большого смысла, когда есть только 100 значений. Конечно, почти все бункеры будут пустыми, а самый низкий, в частности, будет пустым примерно в 90% случаев, как мы рассчитали выше.
Чтобы получить более низкие случайные значения, ваши два варианта: (a) нарисуйте больше чисел из равномерного или (b) измените распределения на тот, у которого больше веса ближе к 0. Вы можете попробовать экспоненциальное распределение? Или, может быть, если вы хотите получить твердую верхнюю границу, вы можете масштабировать бета-дистрибутив? Ваш другой выбор состоит в том, чтобы вообще не использовать случайные значения, возможно, вам нужны равномерно разнесенные значения, а seq
- это то, что вы ищете?
Значение min равно 0,0000000001 или что-то в этом роде (а не exp (-10), как я писал). Простите за это. Но мне нужно равномерное распределение, которое охватывает весь интервал. Мне кажется, что у R есть некоторые ограничения, которые я не могу преодолеть. – novi
Если вы не отредактируете свой вопрос, чтобы показать его, мы не уверены, что существует ограничение в R. В небольших числах могут быть ограничения в арифметике с плавающей запятой, поскольку распределение возможных чисел становится неоднородным, но это не должно происходить при 1е-10. – Spacedman
красивый маленький-множественный сюжет. Могу ли я рекомендовать 'col =" gray "' в ваших 'hist()' вызовах ...? –
Может быть, вы не генерировать достаточно, чтобы сделать это достаточно вероятно, что вы уже видели один:
> range(runif(100,max=0.1,min=exp(-10)))
[1] 0.00199544 0.09938462
> range(runif(1000,max=0.1,min=exp(-10)))
[1] 0.0002407759 0.0999674631
> range(runif(10000,max=0.1,min=exp(-10)))
[1] 5.428209e-05 9.998912e-02
Как часто они происходят?
> sum(runif(10000,max=0.1,min=exp(-10)) < .0001)
[1] 5
5 в этом образце 10000. Таким образом, шансы на получение одного в образце 100, ... (На самом деле вы можете решить эту проблему именно с количеством и свойствами равномерного распределения).
Запуск runif (200, max = 0,1, min = exp (-10)), и я получаю очень хорошие распределенные значения между 0.000451 и 0.09921. Я сделал 15 кусков между этими двумя значениями, где каждый фрагмент содержит от 10 до 15 из этих сгенерированных значений. И есть 0 значений меньше 0,000451. Таким образом, половина моего минимального интервала не покрывается этими данными, а другая половина очень хорошо заполнена. Я получу несколько меньших значений, если я сгенерирую $ 1e^{6} $ случайные величины, но ... нет равномерного распределения для всего интервала. – novi
"* половина моего интервала min-max не покрывается *" это неверно. Ваша шкала идет от 'exp (-10) = 4.5e-5' до' 0.1', общая ширина интервала '0.0999546'. Ваши наблюдаемые значения идут от '0.000451' до' 0.09921', наблюдаемого диапазона '0.098759'. Принимая отношение наблюдаемой к общей ширине, у вас есть 98,8% охвата вашего интервала! Вместо этого вы хотите, чтобы случайные значения были равномерно распределены * по шкале журнала *? – Gregor
У меня плохое печатание. Значение min равно 0.0000000001 или что-то в этом роде (а не exp (-10), как я писал). Простите за это. Я не копировал-> вставлял R-код (который я, вероятно, должен делать). – novi
- 1. Генерация случайной величины с экспоненциальным распределением
- 2. Логической ошибка случайной величины
- 3. Генерация случайной величины из массива на основе процентного веса
- 4. Генерация случайной величины со специфическим средним и дисперсией
- 5. Контроль за случайной величины
- 6. Повторяя из случайной величины
- 7. доступ к значению случайной величины в PyMC3
- 8. Нижняя граница в UiTextfield
- 9. CSS - Нежелательная граница-нижняя
- 10. UITextField: нижняя граница
- 11. Нижняя граница на въезде
- 12. Update нижняя/верхняя граница типа диапазона
- 13. Нижняя граница Омега Нотация
- 14. Нижняя граница для StackPanel
- 15. Нижняя граница не видна
- 16. Нижняя граница нахождения медианы
- 17. Tabhost нижняя граница андроида
- 18. Анализ рекурсию (нижняя граница)
- 19. Получить индекс случайной величины согласующего
- 20. генерирование случайной величины в Sql
- 21. Генерация случайной генерации Pygame
- 22. Нижняя граница с прозрачным изображением
- 23. Генерация случайной буквы
- 24. Генерация случайной даты
- 25. php Alert, когда дата близка к
- 26. Нижняя граница рекурсивного алгоритма Левинштейна
- 27. «нижняя граница» в понимании Scala
- 28. Нижняя граница на Bootstrap Row
- 29. нижняя граница временной сложности путаница
- 30. Верхняя и нижняя граница типа
Что вы подразумеваете под «случайной величиной»? – Hugh
реализация случайной переменной – novi
ваш последний раунд редактирования кажется странным для меня ... «значения» являются множественными, а не единственными ... и ваше последнее предложение - вопрос ... но что угодно ... –