Welcome Guest [Log In] [Register]
Add Reply
Help with improving my random generator
Topic Started: Mar 25 2009, 04:47 PM (314 Views)
MisterHamper

Hey guys. I have here a random script-generator that have priorities to them. What I would like to do, is add a value to each item, while keeping the priorities but still keeping it somewhat random. So if "havregyn" have the value of 50 and and "eggknock" have the value of 60, those two won't be able to spawn together because the maximum value has to be between 90 and 100. But "havregyn" and "bananasplit" (with a value of 25) and " " (with a value of 20) would be able to spawn together. How would I go about doing that? I hope you guys understand. Thanks :)

Code:
 
<?php
function dodosrandgen() {
// set number of links you want to show at once
$show_link = 5;
// separate the links by, i.e. comma would be ",";
$separator = " ";
// Add links
// Please make sure you number entries CORRECTLY
// Look at the example for reference!
// DO NOT erase the priority part, leave all
// to 1 if you don't want them to have different
// priorities!

$links[0][link] = "havregyn</br>";
$links[0][priority] = 25;
$links[1][link] = "helse</br>";
$links[1][priority] = 1;
$links[2][link] = "oatmeal</br>";
$links[2][priority] = 1;
$links[3][link] = "eggknock</br>";
$links[3][priority] = 1;
$links[4][link] = " ";
$links[4][priority] = 15;
$links[5][link] = " ";
$links[5][priority] = 15;
$links[6][link] = "green beans</br>";
$links[6][priority] = 60;
$links[7][link] = "bananasplit</br>";
$links[7][priority] = 40;

// HERE COMES THE BODY
if($links) {
for($i = -1; $i < count($links); $i++) {
for($j = 0; $j < $links[$i][priority]; $j++) {
$newlinksindex = count($newlinks) + 1;
$newlinks[$newlinksindex] = $links[$i][link];
}
}
} // end of if link exist

// debug
if($show_link >= count($newlinks))
$show_link = count($newlinks);

$showarray[0] = "";
$showindex = 0;
// Select a random element from the new array
do {
$randindex = rand(0, count($newlinks));
if(!in_array($newlinks[$randindex], $showarray) && $newlinks[$randindex] != "") {
$showarray[$showindex] = $newlinks[$randindex];
//print_r($showarray);
$showindex++;
}
}while(count($showarray) <= $show_link);

// finally print out
for($i = 0; $i < $show_link; $i++ ) {
if($show_link == 1 || (($i + 1) == $show_link))
print $showarray[$i];
else
print $showarray[$i].$separator;
}
//print_r($ranarray);
//print_r($links);
//print_r($newlinks);

} // end of the dodosrandgen function
?>
Edited by MisterHamper, Mar 25 2009, 04:54 PM.
Offline Profile Quote Post Goto Top
 
1 user reading this topic (1 Guest and 0 Anonymous)
« Previous Topic · Web-Based Programming Support · Next Topic »
Add Reply

Banner and Logo by TheKeith