ID非公開

2021/5/10 11:37

33回答

phpで0〜9の重複しない数字4桁をランダムに生成したいと思っています。

PHP13閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

その他の回答(2件)

0

> 0〜9の重複しない数字4桁 っていうのは、 「4桁の中で重複する数字がない」 という意味ですか? それとも、 「4桁の数字をどんどん発生させて、同じものは出さない」 という意味でしょうか?

0

>どうしても重複しないという処理が分かりません。 基本的に「ランダムに生成する=重複することもある」ということになります(当然ですね)。 初期化してから(もしくはリセットしてから)生成したものを保持しておいてチェックするしかありません。 チェック方法はお好みで。 ひとつのファイルに保持するなら、4桁の使用済み番号を保持すれば最大50KBくらいになるし、最初から10000件の配列をバイトデータで持てば10KB。 #bit単位にすれば1250バイトで済むけど、それはやり過ぎかも(汗 極端な話、ファイル名にしてファイル有無でもいいです。最大10000のファイル数ですからね。ただロックを考えるとディレクトリの方がやりやすいかも(mkdirなら排他処理になるので)。

あと、0000~9999 まであらかじめ作成しておいて、使ったら消す方式というのもありますね。 いずれにしても「ロックをどうするか」が最重要課題になると思います(排他を考慮しなくていいなら、どうとでも書ける話なので)。