2009-10-29 104 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