Зря, он не потокобезопасен, будет UB.Global.Classes.rnd.Next(1, 101);
Global.Variables.MainRandom
он в ThreadLocal, но не безопасен в async.Так бы прокатило, если бы % был ровный, типо 10,20,50 и т.д.А что мешает указать во входящих процент от 0 до 100, а в шаблоне сгенерить рандом переменную от 0 до 101 и проверить эту переменную на попадание в нужный процентаж?
ХМ)))При чём здесь ровный процент или нет? Сделать ровно так как я написал. Во входящих указываем допустимый шанс выполнения действия в процентах. Допустим 59. В шаблоне генерим.число в диапазоне от 0 до 101. Далее сравниваем два числа. Конкретно в нашем примере если это число больше 59, то действие не выполняется, если меньше - выполняется. Вот и получается совершенно точное указанный в процентах шанс на выполнение. Возможно я не совсем правильно понял, но вроде как именно шанс таким образом и будет рассчитан.
Ну так и делают рандом в %, нечего тут думать) Но я бы чуток изменил код выше:ХМ)))
Возможно ты и прав знаешь), думал, думал, походу да),ну че то не до конца уверен я, но походу да.может кто еще тоже проверить?
Я тоже изначально думал как сделать при помощи рандома,но не дошел до такого что ты предложил)
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("Не попали в % и вышли по красной");
}
Можете ли вы в двух словах объяснить, как вы узнали, что он не потокобезопасен?Зря, он не потокобезопасен, будет UB.
ЕстьGlobal.Variables.MainRandom
он в ThreadLocal, но не безопасен в async.
Но вообще, не используйте их, а создавайте свои, что бы потом не удивляться, почему постер глючит.
Потому что там используется обычный рандом .net + разработчики могут это подтвердить (если очевидного недостаточно).Можете ли вы в двух словах объяснить, как вы узнали, что он не потокобезопасен?
Я очень плохо разбираюсь в этой теме, но кого ещё спросить не знаю. Возможно часть вопросов может быть вообще нелогична, но буду рад, если черканете пару строк (может что-то для меня прояснится).Потому что там используется обычный рандом .net + разработчики могут это подтвердить.
Как минимум Thread, раньше были таски, но это могло создавать проблемы.1) Что такое новый поток в ZennoPoster на языке c#? Т.е. это Thread, ThreadPool, Task, Async/Await?
Не стоит тратить время. Только введёте себя же в заблуждение...Чтобы я мог поспрашивать ChatGpt.
2) Я спросил ChatGpt
Потому что есть их потокобезопасные варианты, об этом уже поднималось на форуме когда-тоя ни разу на форуме не видел, чтобы их обрамляли конструкцией lock()
MSDN, используйте поиск.И может кинете пару ссылок, что стоит почитать про потокобезопасность, чтобы это касалось написания кода на C# в ZennoPoster.