【发布时间】:2012-07-10 02:53:57
【问题描述】:
有没有办法从数字列表中获取随机数,然后将它们按顺序排列?
例如,如果我想要 1 到 12 之间的 4 个数字,如何按升序获得这些数字?
编辑:我需要数字是唯一的。
【问题讨论】:
有没有办法从数字列表中获取随机数,然后将它们按顺序排列?
例如,如果我想要 1 到 12 之间的 4 个数字,如何按升序获得这些数字?
编辑:我需要数字是唯一的。
【问题讨论】:
$output = array();
for($i=1;$i<=4;$i++){
$output[] = mt_rand(1, 12);
}
sort($output);
【讨论】:
将随机值存储在数组中,然后使用 PHP 的排序函数:http://php.net/manual/en/function.sort.php
$numbers = range(1, 12);
shuffle($numbers);
$numbers=array_slice($numbers, 0, 4);
sort($numbers);
【讨论】:
<?
$y=array();
for($i=0;$i<4;$i++){$y[$i]=mt_rand(1,12);}
sort($y);
?>
【讨论】:
试试这个,添加到数组,然后排序。
foreach 和 range 会更容易阅读,也更容易维护:)
<?php
$b1 = 1;
$b2 = 12;
$nums = array();
foreach(range(1,4) as $i){
$nums[] = rand($b1,$b2);
}
sort($nums);
var_dump($nums);
【讨论】:
foreach(range(1,4) --- 为什么不for?为此生成一个数组是一种矫枉过正的做法。 PS:不,它不容易阅读,也绝对不容易维护
for 并且每个人都知道如何使用它,而 foreach + range 是非常不直观的解决方案
$nums 并遍历它呢?在这种情况下,我们至少不会创建无用的数组