Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

DZone's Guide to

# ProbabilityRandom //PHP Class

· ·
Free Resource

Comment (0)

Save
{{ articles[0].views | formatCount}} Views
```
Class to return items based on their probability.

Updated version can be found here

usage
```
\$prExample = new ProbabilityRandom;

\$prExample->add( 'I have more chances than everybody :]', 30 );
\$prExample->add( 'I have good chances', 10 );
\$prExample->add( 'I\'m difficult to appear...', 1 );

for( \$x=10; \$x--; print \$prExample->get() . '' );
```

```
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com
class ProbabilityRandom {
#private vars
var
\$data = array(),
\$universe = 0;

#add an item to the list and defines its probability of being chosen
\$this->data[ \$x = sizeof( \$this->data ) ] = new stdClass;
\$this->data[ \$x ]->value = \$data;
\$this->universe += \$this->data[ \$x ]->probability = abs( \$probability );
}

#remove an item from the list
function remove( \$index ){
if( \$index > -1 && \$index < sizeof( \$this->data ) ) {
\$item = array_splice( \$this->data, \$index, 1 );
\$this->universe -= \$item->probability;
}
}

#clears the class
function clear(){
\$this->universe = sizeof( \$this->data = array() );
}

#return a randomized item from the list
function get(){
if( !\$this->universe )
return null;
\$x = round( mt_rand( 0, \$this->universe ) );
\$max = \$i = 0;
do
\$max += \$this->data[ \$i++ ]->probability;
while( \$x > \$max );
return \$this->data[ \$i-1 ]->value;
}
}
``````
Topics:

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Opinions expressed by DZone contributors are their own.