Как предложено Парфе в комментариях, вы используете стратегию рандомизации, которая дает низкую вероятность предоставления интересующего вас условия. Не помогли ли вам другие ответы на этот вопрос ?
Некоторые другие возможные стратегии, которые вы можете попробовать.
n = 30
# Using truncated normal
library(truncnorm)
x = round(rtruncnorm(n, a = -0.0495, b = 100.0495, mean = 85, sd = 3.5*2), 1)
# Using beta
sig = 3
x = round(100*rbeta(n, (0.85)*sig, (1-0.85)*sig), 1)
round(..., 1)
предназначен для выравнивания с вашим вектором x
.Оба эти метода будут иметь очень мало значений по сравнению с 85. Это компромисс, который вы должны рассмотреть.Если вы хотите, чтобы среднее значение составляло 85 +/- 3,5, то, например, вы не можете получить слишком много значений ниже 10.Таким образом, вы должны снизить вероятность выбора таких значений.Используя вашу функцию, когда она будет завершена, вы, вероятно, обнаружите, что значения, близкие к 85, более представлены.