Code archives/Algorithms/Pecentage values
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| Here some functions for AI & Statistics Percentage ratio controlled percentage random, fuzzy (0..1) percentage random Test the demo Gianluca (aka Bitmaniak) | |||||
;******************************************************
;*** This function returns a random number
;*** with percentage parameter
;*** percRnd returns a float value
;*** percRand returns an integer value
;***
;*** Example.1 : percRnd(25)
;*** Return 1 with 25% of probability
;*** Return 0 with 75% (100-25) of probability
;***
;*** Example.2 : percRnd(25,1000)
;*** Return 1 with 2.5% of probability
;*** Return 0 with 97.5% (1000-25) of probability
;******************************************************
Function percRnd#(random#, max#=100)
Return random=>Rnd(max)
End Function
Function percRand(random, max=100)
Return random=>Rand(max)
End Function
;******************************************************
;*** Return the percentual of value to max
;*** Example.1: percent(25,100) = 25.000
;*** Example.2: percent(25,1000) = 2.500
;******************************************************
Function percent#(value#,max#)
Return value* 100.0 / max#
End Function
;******************************************************
;*** This function returns a random number
;*** of a percentage parameter from 0 to 1
;***
;*** Example.1 : percFuzzy(25)
;*** 0 > Return >=1 with 25% of probability
;*** Return 0 with 75% (100-25) of probability
;******************************************************
Function fuzzyRnd#(random#, max#=100)
r# = Rnd(max)
If random=>r
Return Float(r/random)
End If
Return 0
End Function
;******************************************************
Print "tests (eg.1000, bigger = better precision)"
test# = Input(">")
Print "percent (eg.10, max = 100)"
perc# = Input(">")
Print
SeedRnd MilliSecs()
tot = 0
fuz = 0
;*** perfoms a lot of tests
For t=1 To test
If percRnd(perc) tot=tot+1
If fuzzyRnd(perc)<>0 fuz=fuz+1
Next
;*** report statistics
Print
Print "Test : "
Print tot + "/" + test + "=" + Float(test/tot) +" "+ percent(tot,test) + "%"
Print "Attended : "
Print percent(perc,100) + "%"
Print "Error: "
Print Abs(percent(tot,test) - perc)
Print
Print "Fuzzies : "
Print fuz + "/" + test + "=" + Float(test/fuz) +" "+ percent(fuz,test) + "%"
Print "Attended : "
Print percent(perc,100) + "%"
Print "Error: "
Print Abs(percent(fuz,test) - perc)
Print
Print "percRnd(25) = " + percRnd(25)
Print "percRnd(25,1000) = " + percRnd(25,1000)
Print "percent(25,100) = " +percent(25,100)
Print "percent(25,1000) = " + percent(25,1000)
Print |
Comments
None.
Code Archives Forum