C# Разные вероятности в операторах if

#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