@9Simba9

Как седлать рандом с примером ниже толь с шансом на выпадение какого либо варианта (JavaScript Jquery)?

var text = ["Текст1", "Текст2", "Текст3", "Текст4"]; //и т.д.
	rand = text[Math.floor(Math.random() * text.length)];
	
	if(rand=="Текст1"){
		alert('1');
	};
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
console.log(getRandomVariant([
    {chance: 0.4, value: 'Текст1'},
    {chance: 0.2, value: 'Текст2'},
    {chance: 0.15, value: 'Текст3'},
    {chance: 0.25, value: 'Текст4'},
]));

function getRandomVariant(variants) {
    const sortedVariants = getRandomVariant.cache.get(variants) ?? getRandomVariant.cache
          .set(variants, variants.slice().sort((a, b) => b.chance - a.chance))
          .get(variants);
    let rand = Math.random();
    for (const {chance, value} of sortedVariants) {
        if (chance > rand) return value;
        rand -= chance;
    }
}
getRandomVariant.cache = new WeakMap();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lolzqq
HTML,CSS,JS,PHP
rand=Math.random() // получаем число от 0 до 1
var text = [
      [0,0.5,'Текст1'], // 0,0.5 - разброс значений, попадание в который будем сравнивать с rand, 'Текст1' - ваш текст
      [0.5,0.8,'Текст2'],
      [0.8,0.95,'Текст3'],
      [0.95,1,'Текст4']
]
for(i=0;i<=text.length-1;i++){
      if(rand>=text[i][0] && rand<=text[i][1]){
            alert(i);
            break;
      }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы