投稿者 |
メッセージ |
|
< PHPプログラミング ~ 数字をランダムに並び替え |
|
時間:
金 10月 06, 2006 11:30 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
こんばんわ。
1から10までの数字をデタラメに並び替えたいのですがぼくが思いつく方法では
rand()でまず数字を一つ取り出す。
次にまたrand()で数字を取り出すのですがさっきのと違う数字が出るまで何度もループさせる。
次にまたまたrand()で数字を取り出す。さっきの2つと違う数字が出るまで何度もループ。
の繰り返し。
なんかすごく無駄があるように思うのですがもっとスマートな方法ってないものでしょうか? |
|
|
|
|
|
|
|
時間:
土 10月 07, 2006 8:41 pm
|
|
|
登録日: 2006年8月 19日
投稿記事: 19
|
|
array_randを使うのが一般的だと思いますが,あえてコーディングするなら
Code: |
$rand = array();
for($i = 1; $i <= 10; $i++)
{
while(@$rand[($key = mt_rand())]);
$rand[$key] = $i;
}
ksort($rand);
//$rand = array_value($rand);
|
でしょうか
逆バケットソート??? |
|
|
|
|
|
|
|
時間:
火 10月 10, 2006 9:53 pm
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
二行でできます。
Code: |
//1から10までの要素を有する配列を作成
$array = range(1, 10);
//配列$arrayをシャッフル
shuffle($array);
//確認用ダンプ
var_dump($array);
|
リロードするたびに順番が変わります。 |
|
|
|
|
|
|
|
時間:
金 10月 13, 2006 10:20 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
できました。
お二方どうもありがとうございました。 |
|
|
|
|
|
|
|
時間:
水 2月 07, 2007 10:28 pm
|
|
|
|
|
|
|
|
|