We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now

x

random test

rmtogether
rmtogether asked
on
Medium Priority
182 Views
Last Modified: 2010-04-30
hi,

I need have some data for my test. this is something I want to do

(1) generate 5 random numbers ( for example 3,5,3,6,9) and then calculate their probability like (3/26, 5/26, 3/26, 6/26, 9/26) then

(2) write this probabilities to a text file. the program should allow me do more than one test, for example if I need 3 test data. The program will give 3 rows in a text file like below

0.1  0.2  0.3  0.2  0.2

0.4  0.1  0.2  0.1  0.2

0.1  0.1  0.1  0.4  0.3


this is something I just write, but I don't know how to continue, and how to write to a text file. Could someone help me about this? thanks in advance
-------------------------------------------------------------------
    Dim c As Integer
    Dim min_num As Integer
    Dim max_num As Integer
   
    min_num = 1
    max_num = 10
   
    Randomize
    c= min_num + Int(Rnd() * (max_num - min_num))
------------------------------------------------------------------------











   
Comment
Watch Question

Dim t as integer
Dim buf as string
Dim i as integer
Dim prob(0 to 4) as integer
Dim total as integer
Dim nums(0 to 4) as integer
Dim c As Integer
Dim min_num As Integer
Dim max_num As Integer
   
For t = 1 to X ' CHANGE X TO NUMBER OF TIMES YOU WANT TO DO RANDOMIZE TEST
    min_num = 1
    max_num = 10
    For i = 1 to 5
    Randomize
    nums(i) = min_num + Int(Rnd() * (max_num - min_num))
    total = total + nums(i)
    next i


For i = 1 to 5
prob(i) = c / total
buf = buf & prob(i) + " "
next i
buf = buf & vbcrlf
next t



Open "C:\Result.txt" for binary as #1
Put#1, , buf
Close#1
Change at the line:
For t = 1 to X -> X to number of times you want to do test. (lines you want to print)

in line:
Open "C:\Result.txt" -> change the filename to where you want to print result.

Just this :)

Author

Commented:
hi, CSecurity

I have run time error in this line.
nums(i) = min_num + Int(Rnd() * (max_num - min_num))

the error is "subscript out of range".  could you please help me about this?

thanks
Sorry for the code.
Replace this line:

 For i = 1 to 5
    Randomize


To

For i = 0 to 4

:)
Change For i = 1 to 5 to 0 to 4

It exists multiple times in code... Be careful

Author

Commented:
thanks,

I change Change For i = 1 to 5 to 0 to 4, but below


but there is a "type mismatch" error problem.
buf = buf & prob(i) + " "   ----------------> type mismatch


-------------------code-------------------------------------
    Dim t As Integer
    Dim buf As String
    Dim i As Integer
    Dim prob(0 To 4) As Integer
    Dim total As Integer
    Dim nums(0 To 4) As Integer
    Dim c As Integer
    Dim min_num As Integer
    Dim max_num As Integer
       
    For t = 1 To 3 ' CHANGE X TO NUMBER OF TIMES YOU WANT TO DO RANDOMIZE TEST
        min_num = 1
        max_num = 10
        For i = 0 To 4
            Randomize
            nums(i) = min_num + Int(Rnd() * (max_num - min_num))
            total = total + nums(i)
        Next i
   
   
        For i = 0 To 4
            prob(i) = c / total
            buf = buf & prob(i) + " "
        Next i
        buf = buf & vbCrLf
       
    Next t
 
    Open "C:\Result.txt" For Binary As #1
    Put #1, , buf
    Close #1
----------------------------------------------------------------------

Author

Commented:

I put "Str" in this line like,

buf = buf & Str(prob(i)) + " "


but my output always is 0 like below.. could you please help me about this?

 0  0  0  0  0
 0  0  0  0  0
 0  0  0  0  0
because you stored the values into nums() rather thant prob(), the code you posted in no where was buf assigned any value? so ti will always be 0 xD

Author

Commented:

so what should I do in order to have random probability matrix. the sum in each row is equal to 1
I tested this code and works well:



 Dim t As Integer
    Dim buf As String
    Dim i As Integer
    Dim prob(0 To 4) As Double
    Dim total As Integer
    Dim nums(0 To 4) As Integer
    Dim c As Integer
    Dim min_num As Integer
    Dim max_num As Integer
    Dim tmp As String
   
    For t = 1 To 3 ' CHANGE X TO NUMBER OF TIMES YOU WANT TO DO RANDOMIZE TEST
        min_num = 1
        max_num = 10
        For i = 0 To 4
            Randomize
            nums(i) = min_num + Int(Rnd() * (max_num - min_num))
            total = total + nums(i)
        Next i
   
   
        For i = 0 To 4
            prob(i) = nums(i) / total
            If Len(Str(prob(i))) > 3 Then prob(i) = Left(Str(prob(i)), 3)
            buf = buf & prob(i) & " "
        Next i
        buf = buf & vbCrLf
       
    Next t
 
    Open "C:\Result.txt" For Binary As #1
    Put #1, , buf
    Close #1

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:

thanks,

I take off the line
'If Len(Str(prob(i))) > 3 Then prob(i) = Left(Str(prob(i)), 3)

because I want to sum of each row equal to 1
ok... as you like...

Author

Commented:
hi, CSecurity

I posted another question in C language. if you can help me implement in VB or C it would be great. if you want me open another topic please let me know. I really want to finish this program

http://www.experts-exchange.com/Programming/Programming_Languages/C/Q_22049608.html 

thanks in advance
You want in VB or C?

Author

Commented:

either C or VB is ok.

but if you can give me both will be great!!  I will open the same topic in VB section.

Open it in vb and give me link... I have not enough time for C now
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.