function Prob(){
var rnd = Math.random(),
rnd2 = Math.random();
if(rnd<0.4) return (1 + Math.floor(1000 * rnd2)/100);
else if(rnd<0.6) return (11 + Math.floor(1000 * rnd2)/100);
else if(rnd<0.9) return (21 + Math.floor(1000 * rnd2)/100);
else return (31 + Math.floor(500 * rnd2)/100);
}
Вам необходимо два случайных числа, так что я их вычислить в начале , Затем я использую циклы if-else для циклического перехода через ваши 40%, 20%, 30% и 10% (добавляя их, когда я иду). Примечание. Math.random возвращает число от 0 до 1. Тогда для каждой категории я использую МНОГО случайное число, чтобы попасть в диапазон, который вы сказали - поместите его, чтобы убедиться, что это целое число и добавьте начальный номер каждого диапазона. Примечание: диапазон вашего последнего только 5.
я должен объяснить, вы должны использовать два случайных числа, в противном случае диапазон второго числа будет зависеть от категории вы находитесь в
у меня есть. сделать 1000 * rnd2 в полу, а затем разделить на 100 снаружи, чтобы получить 2 десятичных знака, о которых вы просите.
Генерировать случайное число и использовать номер колесо. – Jecoms
Вы можете использовать «взвешенные случайные числа» в качестве поискового запроса. «Вероятность» обычно относится к распределению (нормальный, пуассон и т. Д.). –
Вы можете исследовать, как это сделать, попытаться реализовать его и вернуться, если вы застряли тогда. – vlaz