
PHP 如何控制随机值
$arrTurn=array(18,54,80,110,170,198,234,270,306,302);if($_POST['act']=='turnPlate'){$...
$arrTurn = array(18,54,80,110,170,198,234,270,306,302);
if ( $_POST['act'] == 'turnPlate') {
$key = rand(0,9);
$jl = $arrTurn[$key];
目前是随机18 54等数据,我现在想控制一下 18这个值出现的几率达到80% ,302这个数值出现的几率只有5% 因该怎么写? 展开
if ( $_POST['act'] == 'turnPlate') {
$key = rand(0,9);
$jl = $arrTurn[$key];
目前是随机18 54等数据,我现在想控制一下 18这个值出现的几率达到80% ,302这个数值出现的几率只有5% 因该怎么写? 展开
4个回答
展开全部
你只要提前把数组里的 302 和18 的个数直接弄成对应 的百分百就得了嘛
你想18是80% 就在10个数字里 放8个18 不就是80%了 哈哈
你想18是80% 就在10个数字里 放8个18 不就是80%了 哈哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
太简单了。兄弟们都不好回答。至少加多几句描述一下你的需求嘛。
随机值的获取方式太多了,各次适合略不同。比如验证码,唯一值,干扰码,混淆等。
随机值的获取方式太多了,各次适合略不同。比如验证码,唯一值,干扰码,混淆等。
追问
我补充过了,你看看
追答
给你一个思路:先把基本的随机数,按比例生成多几个,放在一个数组再来rand一下。
比如你原先是 1,2, 3,4,5。再生成 1,1,1,2,2,3,4,5,这个rand出来的结果,1是3/8,约40%。2是2/8,约25%。
大概思路,精简的机率,你再想想。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议那么写
array(18,18,18,18,302,1,2,3);
然后随机从数组取值 这样应该符合你的要求吧
array(18,18,18,18,302,1,2,3);
然后随机从数组取值 这样应该符合你的要求吧
更多追问追答
追问
这样似乎不太好吧。。。
追答
$rand = 0; // 定义rank随机变量
if(mt_rand(1,100) <= 80) {
出现80
}
其他的类似 也可以这么做
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//可以通过放大数组的方式实现。把每个数值都放大到具体的比例;比如 6个1总是比1个2出现的机会更多。
$arrTurn = array(18,54,80,110,170,198,234,270,306,302);
$array = array();
foreach($arrTurn as $k=>$v){
switch($v){
case 18:
for($i=0;$i<80;$i++) $array[]=$v;
break;
case 302:
for($i=0;$i<5;$i++) $array[]=$v;
break;
default
$array[]=$v;
break;
}
}
//shuffle打乱数组函数
shuffle($array);
//输出第一个数组元素
echo reset($array);
$arrTurn = array(18,54,80,110,170,198,234,270,306,302);
$array = array();
foreach($arrTurn as $k=>$v){
switch($v){
case 18:
for($i=0;$i<80;$i++) $array[]=$v;
break;
case 302:
for($i=0;$i<5;$i++) $array[]=$v;
break;
default
$array[]=$v;
break;
}
}
//shuffle打乱数组函数
shuffle($array);
//输出第一个数组元素
echo reset($array);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询