数据库中有两个字段 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
);
}