Есть ли какой то вариант указать во входящих настройках действие с вероятностью в %?

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 224
Благодарностей
75
Баллы
48
Нужно именно в % а не рандом число от и до. Что бы можно было указывать 31 %, или 78% и т.д.
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 553
Благодарностей
918
Баллы
113
Я делаю так
C#:
Random rnd = new Random();
int ver = Convert.ToInt32(project.Variables["veroyatnost"].Value);
int chance = Global.Classes.rnd.Next(1, 101);
//return chance;
if (ver >= chance)
{
    return "ok";
}
else
{
    return null;
}
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 413
Благодарностей
3 329
Баллы
113
Global.Classes.rnd.Next(1, 101);
Зря, он не потокобезопасен, будет UB.

Есть Global.Variables.MainRandom он в ThreadLocal, но не безопасен в async.

Но вообще, не используйте их, а создавайте свои, что бы потом не удивляться, почему постер глючит.
 
  • Спасибо
Реакции: zarufakis

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 224
Благодарностей
75
Баллы
48
Я не понял не первое сообщение, не второе(.Ну понял одно, что походу это очень сложно все что ли?
Что создавать свои? Что не использовать?))))
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 401
Благодарностей
485
Баллы
83
А что мешает указать во входящих процент от 0 до 100, а в шаблоне сгенерить рандом переменную от 0 до 101 и проверить эту переменную на попадание в нужный процентаж?
 
  • Спасибо
Реакции: zhenya777

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 224
Благодарностей
75
Баллы
48
А что мешает указать во входящих процент от 0 до 100, а в шаблоне сгенерить рандом переменную от 0 до 101 и проверить эту переменную на попадание в нужный процентаж?
Так бы прокатило, если бы % был ровный, типо 10,20,50 и т.д.
Ну а вот мне нужно 95 % или 75% как это сделать?
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 401
Благодарностей
485
Баллы
83
При чём здесь ровный процент или нет? Сделать ровно так как я написал. Во входящих указываем допустимый шанс выполнения действия в процентах. Допустим 59. В шаблоне генерим.число в диапазоне от 0 до 101. Далее сравниваем два числа. Конкретно в нашем примере если это число больше 59, то действие не выполняется, если меньше - выполняется. Вот и получается совершенно точное указанный в процентах шанс на выполнение. Возможно я не совсем правильно понял, но вроде как именно шанс таким образом и будет рассчитан.
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 224
Благодарностей
75
Баллы
48
При чём здесь ровный процент или нет? Сделать ровно так как я написал. Во входящих указываем допустимый шанс выполнения действия в процентах. Допустим 59. В шаблоне генерим.число в диапазоне от 0 до 101. Далее сравниваем два числа. Конкретно в нашем примере если это число больше 59, то действие не выполняется, если меньше - выполняется. Вот и получается совершенно точное указанный в процентах шанс на выполнение. Возможно я не совсем правильно понял, но вроде как именно шанс таким образом и будет рассчитан.
ХМ)))
Возможно ты и прав знаешь), думал, думал, походу да),ну че то не до конца уверен я, но походу да.может кто еще тоже проверить?
Я тоже изначально думал как сделать при помощи рандома,но не дошел до такого что ты предложил)
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 266
Благодарностей
825
Баллы
113
ХМ)))
Возможно ты и прав знаешь), думал, думал, походу да),ну че то не до конца уверен я, но походу да.может кто еще тоже проверить?
Я тоже изначально думал как сделать при помощи рандома,но не дошел до такого что ты предложил)
Ну так и делают рандом в %, нечего тут думать) Но я бы чуток изменил код выше:
C#:
int ver = int.Parse(project.Variables["veroyatnost"].Value);
Random rnd = new Random();
int chance = rnd.Next(1, 101);

if (ver >= chance)
{
    return "ok";
}
else
{
    throw new Exception("Не попали в % и вышли по красной");
}
 
  • Спасибо
Реакции: AndreyAAA

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)