|
|
|
อยากทราบว่า php random ค่าแบบเป็นเปอร์เซ็นต์ ยังไงครับ |
|
|
|
|
|
|
|
คุณก็หารน่ะครับ โดยเอาจำนวนที่เป็นไปได้ทั้งหมด ไปหาร 100
เช่น 1-5 แสดงว่ามี 5 ตัว = 100/5 ก็จะได้คนล่ะ 20% ที่จะสุ่มแสดงผล
|
|
|
|
|
Date :
2009-10-29 12:34:15 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ฟังค์ชั่นนี้ เป็นของ พี่ Dr.Yes php.deeserver.net
ผมเอามาทำตัวอย่างเล่นๆ ให้ดู
Code (PHP)
<?php
error_reporting(0);
function w_rand($samples, $weights)
{
if ( count($samples) != count($weights) )
{
return null;
}
$sum = array_sum($weights) * 100;
$rand = mt_rand(1, $sum);
foreach ($weights as $i=>$w)
{
$weights[$i] = $w * 100 + ( $i > 0 ? $weights[$i-1] : 0 );
if ( $rand <= $weights[$i] ) { return $samples[$i]; }
}
}
//น้ำหนักที่จะให้ออก
$weights = array(40, 35, 10, 5, 4, 3, 2, 1);
$samples = array('แดง', 'เหลือง', 'น้ำเงิน', 'ชมพู', 'ดำ', 'ม่วง', 'ขาว', 'ส้ม');
for ( $i = 1; $i <= 100; $i++ )
{
$result = w_rand($samples, $weights) ;
echo 'ซุ่มครั้งที่ ' . $i . ' สีที่ได้' . $result . '<br />';
}
echo '<br /><br />';
$color = array('red' => 'แดง', 'yellow' => 'เหลือง', 'blue' => 'น้ำเงิน', 'pink' => 'ชมพู', 'black' => 'ดำ', 'purple' => 'ม่วง', 'white' => 'ขาว', 'orange' => 'ส้ม');
$samples = array('red', 'yellow', 'blue', 'pink', 'black', 'purple', 'white', 'orange');
$total = array();
for ( $i = 1; $i <= 100; $i++ )
{
$result = w_rand($samples, $weights) ;
echo 'สุ่มครั้งที่ ' . $i . ' สีที่ได้<font color="' . $result . '">' . $color[$result] . '</font><br />';
$total[$result]++;
}
asort($total, 1);
echo '<pre>';
print_r($total);
echo '</pre>';
?>
|
|
|
|
|
Date :
2009-10-29 14:37:30 |
By :
danya |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆครับ เด๋วจะลองดู
|
|
|
|
|
Date :
2009-10-29 16:01:08 |
By :
pollok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|