Есть вот такой код.
(int Chance, ThingType prize)[] chances =
{
(Chance: 50, prize: ThingType.Keg),
(Chance: 50, prize: ThingType.Health),
};
int chance = Random.Range(0, 100) + 1;
for (int index = 0; index < chances.Length; index++)
{
var pair = chances[index];
if (chance <= pair.Chance)
return pair.prize;
}
return ThingType.Chest;
Он позволяет выбрать случайный приз исходя из того, что все вероятности совокупно образуют 100.
Но, если в этом массиве кортежей есть вещи с одинаковым шансом, то получается что будет железно выпадать первая по списку - в данном случае это ThingType.Keg
и никогда - вторая по списку, т.е. ThingType.Keg
Как написать чтобы он мог успешно обрабатывать массивы кортежей с равными и неравными вероятностями? Ну т.е. ожидается что то примерно такое
на вход
(int Chance, ThingType prize)[] chances =
{
(Chance: 70, prize: ThingType.Gold)
(Chance: 30, prize: ThingType.Kind),
(Chance: 50, prize: ThingType.Keg),
(Chance: 50, prize: ThingType.Health),
};
На выходе -
с 35% шансом вернет ThingType.Gold
с 15% шансом вернет ThingType.Kind
с 25% шансом вернет ThingType.Keg
с 25% шансом вернет ThingType.Health
Но что то одно должно вернуть точно
Он позволяет выбрать случайный приз исходя из того, что все вероятности совокупно образуют 100.
Нет, он этого не делает.
double total = sum of all Chance values;
int chance = Random.Range(0, 100) + 1;
int current = 0;
for (int index = 0; index < chances.Length; index++)
{
var pair = chances[index];
current = current + pair.Chance / total * 100;
if (chance <= current)
return pair.prize;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Помогите, пожалуйста, разобраться с проблемой вызова Partial View
Всех приветствуюМне нужно вводить определенные данные в текстовые поля сайта после загрузки страницы
подскажите пожалуйста, мне нужно вызвать public class CallSKP из другого метода, чтоб использовать там значение переменной "text"как это сделать?