![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?08b1c8b)
No.7ベストアンサー
- 回答日時:
ちょっとしたサンプルです。
<?php
$array = array();
for ($i = 0; $i < 20; $i++) {
$num = mt_rand(1, 100);
for ($j = 0; $j < $i; $j++) {
// 配列に格納済の乱数と一致するか?
if ($num == $array[$j]) {
break;
}
}
// 配列に格納済の乱数と一致していれば、再挑戦する
if ($j < $i) {
$i--;
continue;
}
// 初登場の数値ならば、配列に格納する
else {
$array[$i] = $num;
}
}
for ($i = 0; $i < 20; $i++) {
print $array[$i] . "<br />";
}
?>
(注)インデントのため、全角空白を使っています。
No.6
- 回答日時:
<?php
$numbers = range(1, 100);
shuffle($numbers);
for ($i = 0; $i < 20; $i++) {
echo $numbers[$i] . "<br>\n";
}
?>
参考URL:http://jp2.php.net/shuffle
No.5
- 回答日時:
いくつかのやり方がありますが、PHPならshuffle関数がありますし汎用性を考えて次の様なやり方を考えてみました。
<?php
for ($i=0; $i<100; $i++) {
$uni_rand[i] = i; // 0-99の場合。1-100にするときは、 = i を = i+1 に
}
srand(microtime()*10000000); //乱数初期化。PHP4.2.1以降は不要
shuffle($uni_rand); //0-99の$uni_randをシャッフルする
for ($i=0; $i<20; $i++) {
echo $uni_rand[i]."<br>\n"; //シャッフルした$uni_randを順に必要数表示
}
?>
No.4
- 回答日時:
$j=99;
$array = range(0,$j);
for($i=0;$i<20;$i++){
$rand = mt_rand(0,$j);
$num=$array[$rand];
$array[$rand]=$j;
$j--;
echo $num;
echo '<br>';
}
No.3
- 回答日時:
重複無し、と言う条件なら、その条件をしっかり入れるべきです。
質問者さんのスクリプトでは単にランダムで引き出しているだけですよね。こんな感じでしょうか。
<?php
$c = 0;
$a = array();
while ($c < 20) {
$num = mt_rand(0,100);
if(! array_search($num,$a)){
$a[] = $num;
$c ++;
}
}
$str = implode("<br />\n",$a);
echo $str;
?>
とりあえず配列にいれておいて、その配列の中に重複が無ければ追加します。20個でループを抜け、配列を改行キーを挟んで文字列に変換して出力しています。
No.2
- 回答日時:
私なら、まず100までの配列を用意して、それをランダムに並べ替えた後、先頭の20コを表示、というふうに作ります。
<?php
for ($i=0; $i<100; $i++) $nums[$i] = $i+1;
for ($i=0; $i<100; $i++) {
$j = mt_rand(0,99);
$tmp = $nums[$j];
$nums[$j] = $nums[$i];
$nums[$i] = $tmp;
}
for ($i=0; $i<20; $i++) {
$num = $nums[$i];
echo "$num";
echo "<br>\n";
}
?>
No.1
- 回答日時:
乱数を発生する目的を書かないと、適切なアドバイスができません。
乱数は乱数なのですから、以前に発生した乱数と同一の数字が出てくるのは、別におかしなことではありませんから。
さいころを振っても、同じ目が連続して出るのはそれほど珍しい現象ではありませんよね。
重複がいやなら、今まで発生した乱数を配列に格納しておいて、新しい乱数を発生させたときにそれと重複したら、再度乱数を発生する(手を抜くなら、単に1足すとか)ようにすればよいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Excel(エクセル) Excelの関数詳しい方お願いします。 13 2023/01/18 21:11
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
file_existsでファイル名の部分...
-
phpで、連想配列を普通の配列に...
-
PHPにてクラスを配列にすること...
-
フォームからデータを取得したi...
-
繰り返し処理が上手くいかない
-
while文について
-
チェックボックスが複数選択で...
-
PHPでテキストファイルの一部を...
-
foreachのなかで次のキーを参照...
-
PHPでのsubstr関数について
-
$_SESSIONに二次元配列を使える...
-
PHPのカッコ[ ]の使い方について
-
phpmyadminにおける動作速度が...
-
多次元連想配列のキーを変数で...
-
配列の書き方
-
C言語でCSVファイルの行数を読...
-
fgetc関数について
-
別ファイルの構造体の値を読み...
-
$funcって何ですか?
-
任意の単語を組み合わせて表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
$_SESSIONに二次元配列を使える...
-
String だと「 ByRef引数の型が...
-
file_existsでファイル名の部分...
-
foreachのなかで次のキーを参照...
-
postgresql関数をつかったレコ...
-
CSVデータのn番目だけの値を取...
-
PHPのカッコ[ ]の使い方について
-
配列一致(要素順番は違うが内容...
-
漢字のソートについて
-
PHPにてクラスを配列にすること...
-
ネストが深い時のforeachはどう...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
連想配列のprint_rやvar_dump出...
-
配列を回すとき、最後の要素だ...
-
PHP多次元配列で重複チェック
-
PHPのusort関数について
-
mb_ereg_replaceについて
-
SimpleXML関数で取得したXML要...
おすすめ情報