意味不明なコーディング

デモ用のデータを作成するバッチに良く分からんロジックがあった。
かなり省略してるけどこんな感じ。ちなみにTransact-SQLね。

/********パラメーター宣言およびセット部開始******************/
DECLARE @i int
DECLARE @gender varchar(1) --性別
DECLARE @ram float
DECLARE @num_of_customer int
DECLARE @male int
SET @num_of_customer = 1000 --作成したい顧客数をセット
SET @male = 30 --顧客のうち、男性の割合(百分率)をセット
SET @i = 1
/********パラメーター宣言およびセット部終了******************/
WHILE @i <= @num_of_customer
BEGIN
SET @ram = 100 * RAND()
IF (@ram <= @male) --設定したい男女比によりこの数値(@male)を変更する
SET @gender = 'M'
ELSE
SET @gender = 'F'

--テーブルへ挿入

INSERT INTO (省略)

SET @i = @i + 1
END

ロジック部3行目のRAND関数は0〜1までの間のFloat型数値をランダムに返すんだけど、その数値に100をかけた値と、設定したい男女比の値を比較してINSERTする男女区分を設定するってことの意味が分からず悩んだわけですよ。


うんうん悩んだ挙句、こういう結論に。

@ramに入る数値=0〜1までのFloat(小数)→それの100倍→0〜100までの数値
これがランダムだから、30よりも少ない数字になる可能性=30%

と考えたのかなあ?


簡単なデモデータ作成用だから、あまり細かい比率にこだわる必要はないっちゃないんだが、理解するのに時間かかったよ。
実際カウントしてみたら1000件中、女性703件、男性297件で完全に30%にはなってなかった。当たり前だが。
こんなやり方は初めて見たけど、何かの良くあるコーディング手法なのかなあ??