PHP7中生成随机评分需据需求选方法:整数用random_int();一位小数先扩倍再除10并number_format;两位小数同理扩至100倍后sprintf('%.2f');批量去重需循环校验。

在 PHP7 中生成随机评分,通常是指生成一个指定范围内的随机整数或浮点数,比如 1–5 星评分、0–100 分制、或带小数的 0.0–5.0 分(如 4.3、3.7)。关键在于明确需求:是整数还是保留一位/两位小数?是否需要可重复(用于测试)还是真随机?下面分几种常见场景说明。
生成整数评分(如 1–5 星)
使用 random_int()(推荐,密码学安全)或 rand()/mt_rand()(简单场景):
-
✅ 推荐(安全、PHP7+):
$score = random_int(1, 5); // 返回 1、2、3、4 或 5 - ⚠ 注意:
random_int()不接受浮点边界,仅限整数
生成一位小数的评分(如 0.0–5.0)
先生成整数倍数(如 0–50),再除以 10,并用 number_format() 或 sprintf() 控制精度:
$score = random_int(0, 50) / 10.0; // 得到 0.0, 0.1, ..., 5.0$formatted = number_format($score, 1, '.', ''); // 确保固定一位小数,如 "4.7"- ? 若需严格字符串格式(如 API 返回),建议用
number_format而非强制类型转换
生成两位小数的随机评分(如 0.00–10.00)
同理扩大整数范围,再缩放:
立即学习“PHP免费学习笔记(深入)”;
$score = random_int(0, 1000) / 100.0; // 0.00 到 10.00,步长 0.01$display = sprintf('%.2f', $score); // 输出 "8.25",不会出现 "8.250"- ⚠ 避免用
round(rand(0,1000)/100, 2)——rand()已不推荐,且浮点舍入可能引入偏差
批量生成并去重(如模拟用户打分数据)
若需多个不重复的随机评分(例如 10 个用户给同一商品的独立打分):
$scores = [];<br>while (count($scores) < 10) {<br> $s = random_int(1, 5);<br> if (!in_array($s, $scores)) {<br> $scores[] = $s;<br> }<br>}- ? 更高效方式(尤其范围不大时):先生成完整范围数组,再用
shuffle()+array_slice()



















