#c# #math #probability
#c# #математика #вероятность
Вопрос:
Я пишу программу, в которой я помещаю разных учеников в разные классы. У меня возникли некоторые проблемы с пониманием того, как использовать вероятности в C# и программировании в целом. Я хочу, чтобы вероятность того, что я стану студентом в Альфа, 10 и Омега, составляла 5%, а для Ночных Странников-60%. Я не понимаю, какие цифры вводить.Мой метод прямо сейчас:
public string AssignClassroom() { int rand = random.Next(0, 100); { if (rand lt; 5) // or gt;95%? { student.Classroom = "Alpha"; } if (rand lt; 10) // or gt;90? { student.Classroom = "Omega"; } if (rand lt; 60) // or gt;40? { student.Classroom = "Nightwalkers"; } } }
Комментарии:
1. Ставьте
else
между утверждениями.2. @RoyiNamir Исправил это. Значит, все остальное выглядит правильно? Я могу сделать это таким образом? Я имею в виду, скажем, rand = 96. Тогда ученик не будет распределен ни в один класс..
3. Таким образом, ваши желаемые вероятности составляют 75%. Что должно произойти с остальными 25% студентов? Это проблема математики, а не программирования.
4. @Damien_The_Unbeliever Я предполагаю, что мне не следует падать (0,100)?
5. В реальном мире вам, вероятно, следует разделиться по количеству студентов. Ваш алгоритм (даже если он исправлен) с определенной вероятностью поместит студентов в определенные комнаты. Поскольку нет никакой гарантии, что случайные числа будут равномерно распределены, вы все равно можете втиснуть все в комнату Альфа.
Ответ №1:
Вы должны сложить цифры в if
s:
if (rand lt; 5) { student.Classroom = "Alpha"; } else if (rand lt; 10 5) { student.Classroom = "Omega"; } else if (rand lt; 60 10 5) { student.Classroom = "Nightwalkers"; }
Обратите внимание, что 5, 10, 60
это различия:
0 .. 5 .. 15 .. 75 | 5 | | | -gt; 5% top students go to the 1st class | 10 | | -gt; 10% next go to the 2nd | 60 | -gt; 60% goes to the 3d