2009-10-29 70 views
-1

我需要以随机顺序打印出数字1-100。打印声明应该是:PHP随机数

echo'h {'。$ num。'}';

这样做的最短代码是什么?

+9

不要被你的代码缩短了。虽然它应该尽可能简洁,但它不应该是你的首要任务。 – 2009-10-29 03:00:38

回答

9

最简单的方法是使用shuffle以与阵列包含100个号码

例如

$sequence = range(1, 100); 
shuffle($sequence); 
foreach ($sequence as $num) { 
    echo 'h{'.$num.'}'; 
} 

另见range功能

编辑

我以为我想补充一点就做什么洗牌。虽然php.net没有明确地说,但它可能基于现代版本Fisher-Yates shuffle algorithm。有关其工作原理的视频演示,请参阅http://www.youtube.com/watch?v=Ckh2DJrP7F4。另见本优良flash示范

混洗算法本质上是这样的:

  1. 对于一组给定A1至AN的元素,并且n = N;从步骤2

希望帮助1

  • 重复 -
  • 随机选择A1和一个包容
  • 交换Ak与一种
  • 设置N = N之间的元件阿克。

  • +0

    说一个简短的方法是: foreach(shuffle(range(1,100))as $ num)echo'h {'。$ num。'}'; – garethm 2009-10-29 03:19:23

    +3

    @garethm:不会,因为'shuffle'不会返回数组。 – deceze 2009-10-29 03:21:40

    3

    参见例如用于shuffle()

    $numbers = range(1, 20); 
    shuffle($numbers); 
    foreach ($numbers as $number) { 
        echo "$number "; 
    } 
    
    +0

    你需要s/20/100/ – pavium 2009-10-29 03:01:17

    +0

    我只是从手册copy'n'pasting。我将自定义设置留给OP。 – deceze 2009-10-29 03:02:46

    +0

    那么他也可以修复'echo'声明呢? ;-) – pavium 2009-10-29 03:03:52