[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

random test

Posted on 2006-11-03
17
Medium Priority
?
172 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))
------------------------------------------------------------------------











   
0
Comment
Question by:rmtogether
  • 8
  • 8
17 Comments
 
LVL 17

Expert Comment

by:CSecurity
ID: 17872742
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
0
 
LVL 17

Expert Comment

by:CSecurity
ID: 17872744
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 :)
0
 

Author Comment

by:rmtogether
ID: 17873456
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
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 17

Expert Comment

by:CSecurity
ID: 17873527
Sorry for the code.
Replace this line:

 For i = 1 to 5
    Randomize


To

For i = 0 to 4

:)
0
 
LVL 17

Expert Comment

by:CSecurity
ID: 17873530
Change For i = 1 to 5 to 0 to 4

It exists multiple times in code... Be careful
0
 

Author Comment

by:rmtogether
ID: 17873729
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
----------------------------------------------------------------------
0
 

Author Comment

by:rmtogether
ID: 17873806

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
0
 
LVL 10

Expert Comment

by:sakuya_su
ID: 17875402
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
0
 

Author Comment

by:rmtogether
ID: 17875449

so what should I do in order to have random probability matrix. the sum in each row is equal to 1
0
 
LVL 17

Accepted Solution

by:
CSecurity earned 2000 total points
ID: 17876833
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
0
 

Author Comment

by:rmtogether
ID: 17877051

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
0
 
LVL 17

Expert Comment

by:CSecurity
ID: 17877055
ok... as you like...
0
 

Author Comment

by:rmtogether
ID: 17877079
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
0
 
LVL 17

Expert Comment

by:CSecurity
ID: 17877089
You want in VB or C?
0
 

Author Comment

by:rmtogether
ID: 17877102

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.

0
 
LVL 17

Expert Comment

by:CSecurity
ID: 17877132
Open it in vb and give me link... I have not enough time for C now
0
 

Author Comment

by:rmtogether
ID: 17877344
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month19 days, 3 hours left to enroll

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question