как сделать вывод рандомнной переменной в html
Подскажите пожалуйста, возможно ли сделать случайный вывод переменных? К примеру: переменная "а" будет выводится с одним шансом, переменная "б" с другим шансом. Если да то как лучше это сделать.
Ответы (2 шт):
Автор решения: eccs0103
→ Ссылка
Для начала
HTML это язык разметки, а не программирования. Отдельно в нем невозможно сделать какие-то не тривиальные операции. Но вы можете подключить к нему JavaScript и уже там вот что можно делать:
Решение с JavaScript
class Random {
number(min, max) {
return Math.random() * (max - min) + min;
}
case(cases) {
const summary = [...cases].reduce((previous, [, percentage]) => previous + percentage, 0);
const random = this.number(0, summary);
let begin = 0;
for (const [item, percentage] of cases) {
const end = begin + percentage;
if (begin <= random && random < end) {
return item;
}
begin = end;
}
throw new RangeError(`Selector ${random} is out of range [0 - ${summary})`);
}
}
const cases = new Map([
[`1-ий вариант`, 5], // 1-ий вариант с вероятностью 11.90% (5 / 42)
[`2-ий вариант`, 7], // 2-ой вариант с вероятностью 16.67% (7 / 42)
[`3-ий вариант`, 10], // 3-ий вариант с вероятностью 23.81% (10 / 42)
[`4-ий вариант`, 20], // 4-ий вариант с вероятностью 47.62% (20 / 42)
]);
const random = new Random();
const value = random.case(cases);
console.log(value);
Автор решения: BlackStar1991
→ Ссылка
На html это реализовать не получиться. Он отдает столько статически сгенерированый код, обычно в формате кодирования символов UTF-8. Вы можете реализовать это на какойто-из серверных технологий, к примеру на php
Файл index.php фыглядел бы следующим образом.
<p><?php
// Ваши переменные и соответствующие шансы (в процентах)
$variableA = "Переменная A";
$chanceA = 30;
$variableB = "Переменная B";
$chanceB = 70;
// Генерируем случайное число от 1 до 100
$randomNumber = mt_rand(1, 100);
// Определяем, какую переменную выводить в зависимости от сгенерированного числа
if ($randomNumber <= $chanceA) {
echo $variableA;
} else {
echo $variableB;
}
?></p>