php 生成一个随机数(0.11~999.99),判断是否是所有数字相同 , 例如出现1.11 或者11.1,111.1,111.11 这种情况
第1个回答 2016-12-20
思路:用rand函数取11到99999的随机数,然后除以100四舍五入保留2为小数,最终结果在0.11~999.99区间
取到的值除以0.11判断结果是不是为整数,如果是整数,说明值是1.1、2.22这种类型的,符合
999.99 除以0.11 除不尽吧?
追答我去,好像是,那就换另一种处理
去除小数点,当成一个新数,获取长度:如99.9变成999,长度 3
然后截取第一位,如9;然后对应乘以长度对应的1,如长度3,则乘以111(3个1)
乘后的值和新值比较,如9*111=新值999,则这个值符合,记得是原值
第2个回答 2016-12-20
$rnd_num = rand_num();
var_dump(chk_num($rnd_num));
//生成一个小数点后2位的浮点随机数
function rand_num(){
return mt_rand(11,99999)/100;
}
//判断是否连号
function chk_num($num){
$str_num = str_replace(".","",$num); //去小数点
for($i=1,$max=strlen($str_num);$i<$max;$i++){
if(substr($str_num,$i-1,1)<>substr($str_num,$i,1)){
return false;
}
}
return true;
}本回答被提问者采纳
var_dump(chk_num($rnd_num));
//生成一个小数点后2位的浮点随机数
function rand_num(){
return mt_rand(11,99999)/100;
}
//判断是否连号
function chk_num($num){
$str_num = str_replace(".","",$num); //去小数点
for($i=1,$max=strlen($str_num);$i<$max;$i++){
if(substr($str_num,$i-1,1)<>substr($str_num,$i,1)){
return false;
}
}
return true;
}本回答被提问者采纳