Perl - 乱数(rand, srand)

【未完】
perl 乱数(Google)
perl rand(Google)
perl srand(Google)
乱数の取得
簡単CGI 乱数 Part1
簡単CGI 乱数 Part2

#!/usr/bin/perl
#↑パスはそれぞれの環境で変えてください。

use strict;
use warnings;

#今回はCGIで実験した。「.cgi」で保存してください。
#乱数の取得
print "Content-type:text/html\n\n";
print "<html><body>\n";

my $foo = rand;
print $foo."<br />";#これでは小数が表示されてしまう。

my $foo2 = int(rand);
print $foo2."<br />";#このままではずっと0である。

my $foo3 = int(rand(10));
print $foo3."<br />";#0以上10より小さい。つまり、0から9までのどれかをランダムで出現させる
print $foo3 + 1;#上記のことから+1することで、1から10までの数値をランダムで出現させることができる。

print "</body></html>\n";

Perl - undefとは?

【要まとめ】
perl undef(Google)
undef関数は、すでに定義された変数の定義を無効にする。関数の返却値は常に未定義です。
引数を省略して、未定義値(undef)を返し、サブルーチンの返却値として使うことができる。


Perl5編 第16章 配列を操作する関数
Perlでundefが真になる場合→Perlでは(undef)は真
変数の値が未定義なので空文字に見えるのか?それとも実際に空文字列が格納されているのかを区別することができる。
この関数は未定義か定義済みかをチェックし、定義済みの場合は"真", 未定義の場合は"偽"を返す。(変数が文字も数値ももたないNULLの状態が未定義)

use strict;
use warnings;

my $var = undef;#未定義を直接変数に入れている。

print $var;


【結果】
Use of uninitialized value $var in print at 22.pl line 6.
コマンドプロンプト上だとこうなる。つまり変数が未定義なのだ。

perl defined(Google)

$name = "たろう";

print 1 if defined $name;#if definedは直訳すると、「もし定義されていれば」か?

【実行結果】(コマンドプロンプトより)
変数が定義されていれば、1、未定義ならば何も表示されなかった。

$foo = shift;ってなんだろうか?

perl shift(Google)
shiftについて
$foo = shift(Google)
サブルーチンで引数を受け取るときに、よく見るパターンだそうです。
下記の例は、sub1, sub2は全く同じ動作になり、sub3も@_の長さが短くなること以外は同じ。

&sub(10, 20);#このように呼び出す。

sub sub1{
	my $foo = $_[0]; #第1引数を受け取る
	my $foo = $_[1]; #第2引数を受け取る
}

sub sub2{
	my ($boo, $foo) = @_;#第1、第2引数の受け取り
}

sub sub3{
	my $foo = shift; #第1引数の受け取り
	my $foo = shift; #第2引数の受け取り
}

PHP 乱数

PHPで乱数を作成したい。
php 乱数(Google)

乱数を取得する PHP リファレンス

rand関数か、mt_rand関数を使う。
<?php
	/*
引数を指定しなければ0以上32767以下の乱数を返します。
	
int $rand();
int $rand(int min, int max);
	*/
	$rda = rand();
	$rda2 = rand(1,10);

         echo $rda;//0以上32767以下のどれかが表示される
     echo $rda2;//1〜10までのどれかが表示される


	/*
mt_rand関数も仕組みは特に変わりません。
引数を指定しない場合、0以上2147483647以下の乱数を返す。
mt_rand関数はrand関数の高速版(4倍速)となっている。
mt_rand関数が真価を発揮するのは、数の幅が大きい乱数で、
1〜10や1〜100程度だったらどっちを使っても大差ないと
思います。
		
int $mt_rand();
int $mt_rand(int min, int max);
	*/

     $mt_rda   = mt_rand();
         $mt_rda2  = mt_rand(1, 10);

         echo $mt_rda;
         echo $mt_rda2;
         
	
?>

例えば、次のように応用できると思います。

<?php
//サイコロのプログラムです。それぞれの処理を独自でつくれば
//もっといいのが作れるでしょう。
       $rand = rand(1, 6);

      
       switch($rand){
              
             case 1:
                    echo("1です");
                    break;
             case 2:
                    echo("2です");
                    break;
             case 3:
                    echo("3です");
                    break;
             case 4:
                    echo("4です"); 
                    break;
             case 5:
                    echo("5です");
                    break;
             case 6:
                    echo("6です");
                    break;
              }
?>

PHP - explode, implode関数(文字列から配列へ、配列から文字列へ)

php explode(Google)
PHP関数リファレンス - explode

・文字列を区切り文字で配列化する。
explode("区切り文字", "配列のためのインデックス");

$array = explode(",", "HTML,XHTML,XML,XSLT,RSS");
print ($array[1]);
【表示結果】
XHTML

php implode(Google)
そふぃのPHP入門 - implode

・配列を区切り文字で配列化する。
implode("区切り文字", "文字列化する配列");

$array = array("こんにちは", "さようなら", "おはよう", "虹だ");
$string = implode("",$array);//区切り文字は無し
print $string;

【表示結果】
こんにちはさようならおはよう虹だ

//一列になって表示されました。中には、改行タグなどで区切ってもいいでしょう。
【例】implode("<br>", $array);

PHPの正規表現 リンク集

PHP 正規表現 (Google)
PHP 基礎編9 - 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace
英文の正規表現から日本語のようなマルチバイト文字の正規表現まで書かれている。