Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 356
  • Last Modified:

How do you randomly shuffle an array

Suppose I was working with the following array, how would I randomly rearrange the order?
I am woking with VB.NET code.

Dim MyArray(4) as Integer
MyArray(0) = 6546
MyArray(1) = 6547
MyArray(2) = 6548
MyArray(3) = 6549
MyArray(4) = 6550

Cheers
0
pgilfeather
Asked:
pgilfeather
1 Solution
 
MalteseDuckCommented:
Here are some links with different algorithms you can try:

http://www.vb-helper.com/howto_randomize_array.html
http://www.freevbcode.com/ShowCode.asp?ID=1174
http://www.mvps.org/vb/hardcore/html/shuffling.htm

I don't know which is the best, but I hope this is somewhat helpful.
0
 
Jaime OlivaresSoftware ArchitectCommented:
Duplicated question?

Dim arraySize, j as Integer
Dim temp as Integer   ' Must be the same type as array elements

        arraySize = UBound(MyArray) - LBound(MyArray) + 1
        For i = LBound(MyArray) To UBound(MyArray)
            j = Int(arraySize * Rnd)
            temp = MyArray(i)
            MyArray(i) = MyArray(j)
            MyArray(j) = temp
        Next i
0
 
Jaime OlivaresSoftware ArchitectCommented:
Oops! Detected some bug:

           j = Int((arraySize-1) * Rnd)+LBound(MyArray)

 
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
pgilfeatherAuthor Commented:
Thanks for that guys!

jaime olivares,

I have this so far that when you click a button a listbox shows the numbers in the array. How do I set up your code to work with my array?

Whenever I get code from this site it never seems to be runnable code and being a beginner like me this gets frustrating. You can probaly tell from my code that I've just been introduced to the concept of arrays.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim MyArray(4) As Integer
MyArray(0) = 6546
MyArray(1) = 6547
MyArray(2) = 6548
MyArray(3) = 6549
MyArray(4) = 6550
lstNumbers.DataSource = MyArray
lstNumbers.DataBind()      
End Sub
0
 
Jaime OlivaresSoftware ArchitectCommented:
Currently do you see your ordered array?
If so just merge my code with yours:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim MyArray(4) As Integer
Dim arraySize, j as Integer
Dim temp as Integer   ' Must be the same type as array elements

MyArray(0) = 6546
MyArray(1) = 6547
MyArray(2) = 6548
MyArray(3) = 6549
MyArray(4) = 6550

        arraySize = UBound(MyArray) - LBound(MyArray) + 1
        For i = LBound(MyArray) To UBound(MyArray)
            j = Int(arraySize * Rnd)
            temp = MyArray(i)
            MyArray(i) = MyArray(j)
            MyArray(j) = temp
        Next i

lstNumbers.DataSource = MyArray
lstNumbers.DataBind()      
End Sub

If you have any error while compiling, please tell.
0
 
pgilfeatherAuthor Commented:
Thanks that worked!

You forgot to dim 'arraySize' and 'i' but nevertheless you've earned yourself 500 points.

I don't fully understand how this works but I'm glad it does.

Cheers
0
 
Jaime OlivaresSoftware ArchitectCommented:
Thanks for the points, just forgot to Dim the i   ;-)

How it works, it is quiet simple:
The for loop scans for every element in the array, it select a random element in the array and swaps it with the current element.
 
0
 
pgilfeatherAuthor Commented:
Cheers.

Look out for my followup question because I'll no doubt run into further problems.

Thanks again!
0
 
ozoCommented:
         j = Int(arraySize * Rnd)
does not produce a fair shuffle
          j = Int(i* Rnd)
is better
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now