No.5ベストアンサー
- 回答日時:
この問題、一般人には厳しいですね。
考え方としては、「あらかじめカードを作成しておき、それを一枚ずつ出す」というので正解だと思います。
で、カードの重複しない作成ですが、ビンゴカードが5×5で真中がフリーの24の数字とします(本当は1行目は1~20までの数字とか決まりがあるんだと思うけど、よく知らないので無視します)。
○99の数字から24個を抽出
○24個をランダムに並べる(順列)
という手続きだと思います。
順列を作るプログラムは参考URLを参照していただくとして、問題は組合せですね。ちょっとサンプルが発見できませんでした。
ちょっとアルゴリズムに詳しい人なら、簡単に書けるような気がするんですが、私には無理です。すみません。
なんかヒントになるといいのですが。
参考URL:http://www2.tech-unet.ocn.ne.jp/PerlMania2nd/per …
No.4
- 回答日時:
補足見ました。
ダブりのない完全乱数を自動的に生成するのは、コンピュータが「計算機」である以上、実質不可能です。
コンピュータに任せられないのであれば自分で作るしかありません。
ですがある程度、でよければ、ランダムシードと呼ばれる数値をこちら側で制御してあげればOKです。
ランダムシードはPerlでは、関数srandに渡す値のことです。関数srandは、関数randから返ってくるランダム値の値の順番を初期化します。
ですから、以前使用したランダムシードを二度と使わないようにすれば、同じ順序のランダムがもう一度発生することはありません。
通常は
srand(time);
で充分ですが、これで足りないのであればこちら側でランダムシードに渡す順序をファイルか何かに格納しておけばいいでしょう。
なお、それでも不安だということであれば、1つ1つ比較するしかありません(チェックサム方式でよければそれも1つの手ですが)。
No.3
- 回答日時:
通常、重複のない複数の乱数を発生する場合は、次のようなルーチンを組みます。
for ( $i = 0; $i < 10; $i++ ) {
retry:
$table[$i] = int(rand(100));
for ( $j = 0; $j < $i; $j++ ) {
if ( $table[$i] == $table[$j] ) {
goto retry;
}
}
}
こうすれば、配列変数@table[1..10]に重複のない0~99の数字を入れることができます。
また、CGIの場合、この数字を保存したり他の利用者と共有するにはファイルを使います。
その昔、コンピュータがまだ8ビットだった頃からこの手法を使っていましたが、これで重くなったという話は聞いたことがありません(^_^;
ですからこの方法で特に問題ないと思います。
ご回答ありがとうございます。
今回、質問しているのは、番号の重複というより、番号の並びの重複を避ける方法が知りたいのです。(質問がわかりづらくてすみませんでした。)
乱数を利用して、番号の並びを変えても、必ず並びが重複しない!とは言い切れませんし…。
なにか良い方法がありましたら、よろしくお願いいたします。
No.1
- 回答日時:
作り置きしてあるカードをダブらないように配付するのは別に負荷なんかかからないように思うのですが、どんなもんでしょう?
ご回答、ありがとうございます。
確かにあらかじめカードを作っておけば、番号の並びがだぶらないカードを配布する事はできるのですが、その肝心の「番号の並びがだぶらないカード」を作る方法がよくわからないので、困っています…。
乱数を利用して、番号の並びを変えても、同じ並びのカードができないとは言い切れないですし…。(やっぱり、多少のだぶりは仕方ないのかな?)
なにか良い方法(アルゴリズム)がありましたらよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- その他(プログラミング・Web制作) robots.txtが”allow”のサイトを探しています 2 2022/10/09 13:07
- クレジットカード PayPayカードについて。 先月、ワイモバイルのキャンペーンで、PayPayカードを作って期日まで 8 2022/07/18 14:52
- ポイントサービス・マイル 楽天カードで番号の登録と抹消の繰り返しは? 1 2022/09/10 17:39
- ポイントサービス・マイル Pontaポイントの移行・統合 3 2023/03/06 21:49
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- クレジットカード 楽天カード新規申込について 4 2022/06/05 14:59
- マルウェア・コンピュータウイルス Microsoftサポートをかたる詐欺について 5 2022/03/22 19:22
- その他(暮らし・生活・行事) → ※このメールは、ファミマTカードをファミペイに登録されたことがある会員様にお送りしております。す 4 2023/05/03 12:24
- LINE LINE Pay クレジットカードについて 家族がLINE Pay p+ のカードを作ってLINEア 1 2023/03/04 15:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
射精をして1週間以内に尿検査を...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
今朝、毎朝の習慣でオナニーし...
-
変な話しになります。尿検査で...
-
1日前の検尿
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
検便についてです。 便は取れた...
-
EXCELで条件付き書式で空白セル...
-
小数点以下を繰り上げたものを...
-
勃起する時って痛いんですか? ...
-
男です。昨日の午後3時くらいに...
-
2つの数値のうち、数値が小さい...
-
これって喉仏ですか? 私は女性...
-
EXCELで式からグラフを描くには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報