Re: Random listbox item selection





"Family Tree Mike" wrote:



"kimiraikkonen" wrote:

On Dec 21, 12:46 am, Charlie Brown <cbr...@xxxxxxxxxx> wrote:
On Dec 20, 4:58 pm, kimiraikkonen <kimiraikkone...@xxxxxxxxx> wrote:



On Dec 20, 7:43 pm, Kerry Moorman

<KerryMoor...@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
Family Tree Mike,

I think that should be:

listBox1.SelectedIndex = r.Next ( 0, listBox1.Items.Count)

because the range of values returned by Next includes the minvalue but
excludes the maxvalue.

Kerry Moorman

"Family Tree Mike" wrote:

"kimiraikkonen" wrote:

Hi,
How can i select next listbox item without obeying array order? How to
select an listbox item "randomly" inside the array?

Thanks.

dim r as new Random
listBox1.SelectedIndex = r.Next ( 0, listBox1.Items.Count - 1 )

Thanks "Kerry Moorman" and "Family Tree Mike",
It worked. The last question is: how may i determine if all the
listbox items were selected randomly? I mean, after all the listbox
items are selected, i want to get a msgbox that all the listbox items
are selected randomly, there's no item left unselected(in random
order).(just like an information about end of list)

Thanks!- Hide quoted text -

- Show quoted text -

try something like

if listbox.items.count = listbox.selecteditems.count then
'do something
end if

Hi, that doesn't work, only works with listbox's multiselect
(multiselect at the same time) function which is offtopic. I want to 2
thins if anyone can help:

For random selection procedure(as Kerry and Family Tree Mike helped);
1- I want an listbox item selected only for once, i don't want a
listbox item selected for twice or three (random order).
2-When all the items are selected in a random order, i want to get a
msgbox("all items were selected, there is no item left unselected in
random order").

Thanks!


I think you want something like this. the list loi should be a form level
member while the rest is in a routine where you are changing the selected
item. Somehow, depending on your requirements, you will need to know that
the routine could not pick any more entries.

Here is the code:

Dim loi As New System.Collections.Generic.List(Of Integer)

public bool NextRandomClick()
Dim r As New Random
Dim idx As Integer

If (loi.Count = ListBox1.Items.Count) Then
MsgBox("All have been selected...")
Return false
End If

idx = r.Next(0, ListBox1.Items.Count)

While (loi.Contains(idx))
idx = r.Next(0, ListBox1.Items.Count)
End While

ListBox1.SelectedIndex = r.Next(0, ListBox1.Items.Count - 1)
return true
end function



All right... It's an early morning... I fixed it up som more...

Dim loi As New System.Collections.Generic.List(Of Integer)

public bool NextRandomClick()
Dim r As New Random
Dim idx As Integer

If (loi.Count = ListBox1.Items.Count) Then
MsgBox("All have been selected...")
Return false
End If

idx = r.Next(0, ListBox1.Items.Count)

While (loi.Contains(idx))
idx = r.Next(0, ListBox1.Items.Count)
End While

ListBox1.SelectedIndex = idx
loi.Add(idx)
return true
end function

.