我想生成一个包含14位数的数字。但我想以某种模式生成它。请考虑以下数字:
292 0505 150 0253
0505
是一天一个月,意味着05
是月份,05
是一天。因此,在生成随机数时,第一部分必须从0
到12
,第二部分必须从1
到31
150
)是随机的我希望每次尝试都通过curl发布到页面。
答案 0 :(得分:2)
现在,如果我理解了你想要的东西,试试这个:
$numberAsString = '292' . mt_rand(1, 12) . mt_rand(1, 31) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) . '0253';
我将数字保存为字符串,因为我不认为PHP可以处理大而不使用浮点数的数字。
答案 1 :(得分:1)
function randomNumber($startDate,$endDate){
$days = round((strtotime($endDate) - strtotime($startDate)) / (60 * 60 * 24));
$n = rand(0,$days);
return '292'.date("md",strtotime("$startDate + $n days")).rand(100,999).'0253';
}
$myRandomNumber = randomNumber('2010-01-01', '2010-12-31');
$url = "http://www.example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $myRandomNumber);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
这假设您正在发布数据。如果使用GET(或其他HTTP方法),则需要进行更改。
您可以为前4个随机数提供一个日期范围(例如,允许包含/排除闰年 - 或者在今天之前保留日期)
答案 2 :(得分:1)
如果我理解正确的话:
职位1-4随机0000-9999
位置5,6(从最右边开始)随机01-12
位置7,8范围01-31
职位9-14随机000000-999999
我不知道你的后端是什么,但php格式是rand(min,max)
您可以将数字合并为14个字符长的字符串,使用位置5,6和7,8上的sprintf来确保单个数字日期的前导零。
32位php不支持int或float中的14位小数。但看起来你不需要对这个长数字进行任何数学运算。
答案 3 :(得分:0)
卷积&周围的困惑。
echo '292'
.DateTime::createFromFormat('z',rand(0,365))->format('md')
.sprintf('%03d',rand(0,999))
.'0253';
其中有一个额外的好处就是不会像接受的答案那样抛弃000-099随机性。