Ожидаемое значение (математическое ожидание) в Visual Basic .NET - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть программа, которая начинается с экрана приветствия «Введите число случайных величин X», и это число относится к столбцам.Если он введен 5 =>, будет создано DataGridView с 5 столбцами и 2 строками (первая для случайной величины, введенной пользователем, а вторая для вероятности).Например:

X 1 2 3 4 5 6

p 2 2 2 2 2 2

Я должен умножить x1 с вероятностью p1, значение x2 с вероятностью p2 и так далее.Итак, EX = x1*p1 + x2*p2 +... Здесь возникает вопрос - как умножить, а затем добавить их?

Всего 2 строки, вот сколько мне нужно:

Я включил только 2 строки, этосколько у меня должно быть для этой программы:

  Const allowedRows As Integer = 2

    Private Sub DataGridView1_UserAddedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserAddedRow
        DataGridView1.AllowUserToAddRows = DataGridView1.RowCount <= allowedRows
    End Sub

    Private Sub DataGridView1_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow
        DataGridView1.AllowUserToAddRows = DataGridView1.RowCount <= allowedRows
    End Sub

Цикл:

    For j = 0 To DataGridView1.Columns.Count
    For i As Integer = 0 To DataGridView1.RowCount - 1
        multi = CInt(DataGridView1.Rows(i).Cells(j).Value) * CInt(DataGridView1.Rows(i).Cells(j).Value)
    Next
    EX += multi
Next

Я не думаю, что это должно быть так (это дает исключение OutOfRange), но этопочему я пишу здесь, так что если кто-нибудь знает, как это сделать, я буду очень благодарен.Заранее спасибо.

1 Ответ

0 голосов
/ 21 ноября 2011

Я больше знаком с C Sharp, поэтому простите мой синтаксис, если он не на 100%.

Я чувствую, что ты в большинстве случаев там. Я дам оба набора кода, чтобы вы могли основывать его на C Sharp, если мой VB-синтаксис немного нарушен ... в любом случае, концепция должна быть разумной.

VB

For j = 0 To DataGridView1.Columns.Count          
   EX += CInt(DataGridView1.Rows(0).Cells(j).Value) * // mult p*X in each column
      CInt(DataGridView1.Rows(1).Cells(j).Value)      //  and add total 'EX'           
Next   

C #

//Do math
int EX = 0;
for (int j = 0; j < dgv.Columns.Count; j++)
{
   EX += Convert.ToInt32(dgv.Rows[0].Cells[j].Value) *
      Convert.ToInt32(dgv.Rows[1].Cells[j].Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...