![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
こんにちは、
>データベースらしきものを改造中です。
これがどんな物なのか分かりませんが。
以下の様な感じでどうでしょう?
#! /usr/bin/perl
use strict;
use warnings;
my %selected_data_of = ();
while ( scalar keys %selected_data_of < 4 ) {
my ( $id , $data ) = &get_rand_data();
$selected_data_of{$id} = $data;
}
foreach my $id ( keys %selected_data_of ) {
print qq($id = $selected_data_of{$id}\n);
}
sub get_rand_data {
my $id = int rand(10);
my $data = qq(data of $id);
return ( $id , $data );
}
ハッシュのキーはユニークなので、
データベースらしきものから取得したIDをハッシュのキー、
表示したいデータを値としてハッシュに格納して、
ハッシュのキーの数が4つになったら終わり。
ランダムなデータを取得するサブルーチンはスクリプトを動かす為の
意味の無い内容ですから、ご自分の環境で作って下さい。
あと、無限ループにならない対策はご自分でお願いします。
No.3
- 回答日時:
単純に@aの中身を三つ取り出すサンプルプログラムを書きました。
@outに出力結果が入ります。@a=(1,2,3,4,5);
#設定
$limit=3;#取り出す数
$err="_";#エラーの印
@out=();
#実行
--$limit;#数字調整
if($#a>$limit){#データ数判定
for(;$#out<$limit;){
do{
$r=int(rand()*($#a+1));
}while($a[$r] eq $err);
push(@out,$a[$r]);
$a[$r]=$err;
}
}else{@out=@a;}
print @out;
基本的考え方は、乱数を発生させ、配列のデータを読み込み、@outに入れるのですが、その際にデータをエラーの印($errの中身である[_]のこと。空白にするのもあり。)に上書きし、次回からは配列のデータがエラーの印なら、再度乱数を発生させます。
一度使用した配列のデータを使えなくするというのも、ひとつの手ですね。
一応、saru_1234さんの言う前出と同じならやり直し、を楽に形にしたものだと思ってください。
ちなみに、$#配列名=配列の数です。ただし、配列での数え方のため、中身が五つの場合、数は四つとなります。(零から数えるから。)
ついでに、無限ループの回避は簡単にしているつもりですが、危ないかもしれないで、さらに突っ込んだ回避はがんばってください。たぶん通常なら大丈夫ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- その他(データベース) Q&Aフォームを作成したいのですが、どう設計してよいか分かりません、アドバイスお願い致します。 1 2023/07/27 19:04
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- 政治 選挙はランダム投票でするべきだろう。 ランダム投票とは、国民から無作為に投票者を抽出する投票制度。 4 2022/06/24 17:09
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
テキストファイルで提出とは?
-
perlプログラミング 空白行削除
-
perlをバージョンアップしたら...
-
perl 正規表現でエラー
-
LinuxにおいてのPerlのプログラ...
-
Perlの質問:行と列を入れ替え...
-
Strawberry Perl for Windows ...
-
ターミナルで特定の文字と文字...
-
Perlの全角スペース 文字化け?
-
Perlで時間の計算
-
openした後、closeしないでプロ...
-
これをビジュアルスタジオで実...
-
【超初心者】異なるディレクト...
-
ファイルをディレクトリ分配の...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのようなプログラムをつくれ...
-
csvで順番の入れ替え
-
perlでの三次元配列の作り方
-
配列の中に重複文字列があるか...
-
要素を削除する最適な方法
-
perlで複数行のデータを自由に...
-
pushをすると行ができる
-
ファイルから読み込んで配列へ
-
Perlの初歩的な質問・・・
-
行・列の整理! perl
-
C言語のバイナリモードでのfsca...
-
perl-cgi 文字の長さでソートし...
-
C言語でバイナリファイルの読み...
-
Pythonの再帰関数の動作の流れ...
-
CSVデータ「","」と「,」混在読...
-
perlで読み込んだURLを配列に入...
-
perlの無名配列の使い方を教え...
-
ソートのテクニックについて
-
ランダムでかぶらないように4...
-
頻度表の作成(Perl初心者です)
おすすめ情報