数据库中有两个字段 id, sorce.假设sorce的取值范围是 5-10.
按照以下概率实现sorce数据的更新。
5(25%) => 6 5(25%) => 7
6(20%) => 7
7(25%) => 8 7(25%) => 6
8(10%) => 6 8(25%) => 9
9(15%) => 8 9(20%) => 10
10(25%) => 9
要求考虑性能及扩展性。写出概率分布相关代码。
按照以下概率实现sorce数据的更新。
5(25%) => 6 5(25%) => 7
6(20%) => 7
7(25%) => 8 7(25%) => 6
8(10%) => 6 8(25%) => 9
9(15%) => 8 9(20%) => 10
10(25%) => 9
要求考虑性能及扩展性。写出概率分布相关代码。
第一个网友的做法如下:
function getChangeNum($oldNum){ if($oldNum<5 || $oldNum>10){ return false; } $randArr = array( 5=>array(25=>6, 50=>7),6=>array(20=>7), 7=>array(25=>8,50=>6),8=>array(10=>7,35=>9), 9=>array(15=>8,35=>10),10=>array(25=>9), ); $arr = $randArr[$oldNum]; $random = rand(1,100); foreach ($arr as $k=>$v ){ if( $random<$k ){ return $v; } }
return false;
}
第二个网友的做法如下:
$updateArray = array('5.25'=>'6','5.25'=>'7');
foreach($updateArray as $k=>$v)
{
$ks = explode('.',$k,2);
$sql = "update table set field='{$v}' where field={$ks[0]} and round(rand(),2) <={$ks[1]}";
$db->query($sql);
}