RANDOMランダム関数

本ページには広告が含まれています。

0以上Range未満の範囲にある乱数(整数)を返します。引数を省略した場合は、0以上1未満の乱数(有効数字15桁)を返します。

構文
  1. return = RANDOM( Range )
引数
Range (Integer)省略可
数値
戻り値
0 <= X < Rangeの範囲にある乱数を返す

使い方

0以上10のN乗未満の整数を返す

UWSC
PRINT RANDOM(POWER(10, N))
UWSC
PRINT INT(RANDOM() * POWER(10, N))

M以上N未満の整数を返す

UWSC
PRINT M + RANDOM(N - M)

M以上N以下の整数を返す

UWSC
PRINT M + RANDOM(N - M + 1)
ランダムな小数

ランダムな小数を取得したい場合は、整数を取得してから全体を1/10, 1/100などのようにして小数点の位置をずらします。

以下の例は、15以上23以下で取得してから1/10して1.5以上2.3以下を取得する例。

UWSC
PRINT (15 + RANDOM(23 - 15 + 1)) / 10

N桁の整数を返す

M以上N未満の整数の応用です。

UWSC
PRINT POWER(10, N - 1) + RANDOM(POWER(10, N) - POWER(10, N - 1))
3桁

100以上1000未満の範囲。

UWSC
PRINT 100 + RANDOM(1000 - 100)
4桁

1000以上10000未満の範囲。

UWSC
PRINT 1000 + RANDOM(10000 - 1000)
5桁

10000以上100000未満の範囲。

UWSC
PRINT 10000 + RANDOM(100000 - 10000)

取得したランダム値の範囲を確認

以下は「RANDOM(10)」が取りうる範囲を調べるプログラムです。

RANDOM関数で取得したランダム値を100回取得しすべて配列に格納して、その最小値と最大値を取得しています。RANDOM(10)は0〜9と範囲が狭いのでとりあえず100回にしてますが、ランダム値の取る範囲に応じて回数を増減させる必要があります。

これを実行して想定していない範囲外の値が出るようであれば、間違っているということがわかります。

UWSC
DIM array[-1]

FOR i = 1 TO 100
	arrayPush(array, RANDOM(10))
NEXT

PRINT "最小値:" + CALCARRAY(array, CALC_MIN)
PRINT "最大値:" + CALCARRAY(array, CALC_MAX)

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   処理後の配列の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
結果
プレーンテキスト
最小値:0
最大値:9

プログラム実行例

パスワードを生成

パスワードを10個生成します。

結果は実行する度に変わります。

UWSC
REPEAT
	res = INPUT("何桁のパスワード?")
	IF res = EMPTY THEN EXIT
UNTIL CHKNUM(res)

FOR num = 0 TO 10
	DIM password = ""
	FOR n = 0 TO res
		SELECT RANDOM(3)
			CASE 0
				password = password + CHR(RANDOM(10) + 48)
			CASE 1
				password = password + CHR(RANDOM(26) + 65)
			CASE 2
				password = password + CHR(RANDOM(26) + 97)
		SELEND
	NEXT
	PRINT password
NEXT
結果
プレーンテキスト
D659nv9Z6Q1t1MXjXfPUMMe35r012a639
XsQg7139wsUWF2q764f9AiopT451aULBC
A8a2t7Iq0Tl7Ij3W4p5RmQ97ElwvkWeG4
u8RTBF1aDt365Y436XC09Uo5X9kWHc4dS
AeCg2uNoUrCR9FsjYHtdhHg2bB6S92NhY
3eR4l89x7WGf1SZTlpDcIbBc25IbEgk4a
nuT94OR530poRBt9s0wF1b275qAfGDOHa
KTRa7wmEHjab2MopiT8u3aPwI6ntWmMt5
Bz626hGf9GS6yeZQyHrIAbEk1N0fs1ZL5
6Nze7rld3Rmd0tU0Y6kgP1AUwab0bjQlR
11C0x8862eOP1AVjVlXz7rEl4nKkR91Hf
使用関数

ランダムなサイズのファイルを10個生成

UWSC
FOR i = 0 TO 10
	DIM cmd = "CD C:\Users\Owner\Desktop\Folder & fsutil file createnew textfile%val%.txt " + RANDOM(POWER(10, 5))
	PRINT DOSCMD(REPLACE(cmd, "%val%", i))
NEXT

//////////////////////////////////////////////////
// 【引数】
//   interval : 加算する時間間隔を表す文字列式(yyyy:年、m:月、d:日、ww:週、h:時、n:分、s:秒) 
//   num : dateに加算する値。未来は正、過去は負で指定 
//   date : 時間間隔を加算する日付 
// 【戻り値】
//   日時(date)に、指定した単位(interval)の時間(num)を加算して返します 
//////////////////////////////////////////////////
FUNCTION dateAdd(interval, num, date)
	DIM year, month, day, d
	GETTIME(0, date)
	DIM time = G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2
	SELECT interval
		CASE "yyyy"
			d = (G_TIME_YY + num) + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
			IF time <> "00:00:00" THEN d = d + " " + time
		CASE "m"
			IFB num > 0 THEN
				year = G_TIME_YY + INT((G_TIME_MM + num) / 12)
				month = REPLACE(FORMAT(((G_TIME_MM + num) MOD 12), 2), " ", "0")
			ELSE
				year = G_TIME_YY + CEIL((G_TIME_MM + num) / 12 - 1)
				month = REPLACE(FORMAT(G_TIME_MM - (ABS(num) MOD 12), 2), " ", "0")
			ENDIF
			IF month = "00" THEN month = 12
			day = G_TIME_DD2
			d = "" + year + month + day
			IFB !isDate(d) THEN
				d = year + "/" + month + "/" + "01"
				d = getEndOfMonth(d)
			ELSE
				d = year + "/" + month + "/" + day
			ENDIF
			IF time <> "00:00:00" THEN d = d + " " + time
		CASE "d"
			t = GETTIME(num, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "ww"
			t = GETTIME(num * 7, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "h"
			t = GETTIME(num / 24, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "n"
			t = GETTIME(num / 1440, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "s"
			t = GETTIME(num / 86400, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
	SELEND
	RESULT = d
FEND

//////////////////////////////////////////////////
// 【引数】
//   interval : 時間単位(yyyy︰年、q:四半期、m︰月、d︰日、w:週日、ww:週、h:時、n:分、s:秒) 
//   date1 : 日時1 
//   date2 : 日時2 
// 【戻り値】
//   date2からdate1を引いた時間間隔を求めます。 
//////////////////////////////////////////////////
FUNCTION dateDiff(interval, date1, date2)
	DIM y1, y2, m1, m2, d1, d2, d
	SELECT interval
		CASE "yyyy"
			GETTIME(0, date1)
			y1 = G_TIME_YY
			GETTIME(0, date2)
			y2 = G_TIME_YY
			d = y2 - y1
		CASE "q"
			GETTIME(0, date1)
			y1 = G_TIME_YY
			m1 = G_TIME_MM
			GETTIME(0, date2)
			y2 = G_TIME_YY
			m2 = G_TIME_MM
			d = y2 * 4 + CEIL(m2/3) - (y1 * 4 + CEIL(m1/3))
		CASE "m"
			GETTIME(0, date1)
			y1 = G_TIME_YY
			m1 = G_TIME_MM
			GETTIME(0, date2)
			y2 = G_TIME_YY
			m2 = G_TIME_MM
			d = (y2 - y1) * 12 + m2 - m1
		CASE "d"
			d1 = GETTIME(0, date1)
			d2 = GETTIME(0, date2)
			d = (d2 - d1) / 86400
		CASE "w"
			d = INT(dateDiff("d", date1, date2) / 7)
		CASE "ww"
			date1 = dateAdd("d", -1 * getWeekday(date1), date1)
			d = INT(dateDiff("d", date1, date2) / 7)
		CASE "h"
			d = dateDiff("d", date1, date2) * 24
		CASE "n"
			d = dateDiff("d", date1, date2) * 1440
		CASE "s"
			d = dateDiff("d", date1, date2) * 86400
	SELEND
	RESULT = d
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 最大公約数を求める数値を格納した配列 
// 【戻り値】
//   最大公約数 
//////////////////////////////////////////////////
FUNCTION GCD(array[])
	DIM c = LENGTH(array)
	DIM rem = array[c-1] MOD array[c-2]
	IFB rem = 0 THEN
		IFB LENGTH(array) = 2 THEN
			RESULT = array[c-2]
			EXIT
		ENDIF
		RESIZE(array, c-2)
		RESULT = GCD(array)
		EXIT
	ENDIF
	array[c-1] = array[c-2]
	array[c-2] = rem
	RESULT = GCD(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   date : 日付(”YYYYMMDD” or “YYYY/MM/DD” or “YYYY-MM-DD” or “YYYYMMDDHHNNSS” or “YYYY/MM/DD HH:NN:SS”) 
//   m : 第一引数の指定日からプラスマイナスm月とする 
// 【戻り値】
//   dateからm月後の月末の日付 
//////////////////////////////////////////////////
FUNCTION getEndOfMonth(date, m = 0)
	date = dateAdd("m", m + 1, date)
	GETTIME(0, date)
	GETTIME(-G_TIME_DD, date)
	RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
FEND

//////////////////////////////////////////////////
// 【引数】
//   date : 日付文字列(”YYYYMMDD” or “YYYY/MM/DD” or “YYYY-MM-DD” or “YYYYMMDDHHNNSS” or “YYYY/MM/DD HH:NN:SS”)もしくはシリアル値 
//   type : 取得する曜日番号の種類を示す0〜3または11〜17の値。1と17は日曜日を1、2と11は月曜日を1とカウントします。11以降はExcel2010で追加された値で、互換性を保つために重複した値があります。 
// 【戻り値】
//   typeで指定した種類によって以下の値を返します。 : (0 : 0(日曜)〜6(土曜)、1 : 1(日曜)~7(土曜)、2 : 1(月曜)~7(日曜)、3 : 0(月曜)〜6(日曜)、11 : 1(月曜)~7(日曜)、12 : 1(火曜)~7(月曜)、13 : 1(水曜)~7(火曜)、14 : 1(木曜)~7(水曜)、15 : 1(金曜)~7(木曜)、16 : 1(土曜)~7(金曜)、17 : 1(日曜)~7(土曜)) 
//////////////////////////////////////////////////
FUNCTION getWeekday(date, type = 1)
	IF VARTYPE(date) <> 258 THEN date = text(date, "yyyy/mm/dd")
	GETTIME(0, date)
	DIM w = G_TIME_WW
	SELECT TRUE
		CASE type = 0
			RESULT = w
		CASE type = 1
			RESULT = w + 1
		CASE type = 2
			RESULT = IIF(w=0, 7, w)
		CASE type = 3
			RESULT = (w+6) MOD 7
		CASE type >= 11
			RESULT = ((getWeekday(date, 2) + 17 - type) MOD 7) + 1
	SELEND
FEND

//////////////////////////////////////////////////
// 【引数】
//   serial : シリアル値もしくは時刻文字列 
// 【戻り値】
//   時刻から時間を表す0〜23の範囲の値 
//////////////////////////////////////////////////
FUNCTION Hour(serial)
	IF VARTYPE(serial) = 258 THEN serial = timeValue(serial)
	RESULT = INT(serial * 24) MOD 24
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   date : 存在するかを調べる日付文字列。YYYYMMDD or YYYY/MM/DD or YYYY-MM-DDのいずれかの形式。 
// 【戻り値】
//   TRUE : 日付として認識できる、FALSE : 日付として認識できない 
//////////////////////////////////////////////////
FUNCTION isDate(date)
	TRY
		GETTIME(0, date)
		RESULT = TRUE
	EXCEPT
		RESULT = FALSE
	ENDTRY
FEND

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現にマッチするかどうかを示すブール値 
//////////////////////////////////////////////////
FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Test(str)
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   serial : シリアル値 
//   format : フォーマット 
// 【戻り値】
//   数値を表示書式に基づいて変換した文字列 
//////////////////////////////////////////////////
//////////////////////////////////////////////////
// 【引数】
//   serial : シリアル値 
//   format : フォーマット 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION text(serial, format, hour12 = FALSE)
	HASHTBL startDate
	startDate["明治"] = "1868/01/25"
	startDate["大正"] = "1912/07/30"
	startDate["昭和"] = "1926/12/25"
	startDate["平成"] = "1989/01/08"
	startDate["令和"] = "2019/05/01"
	
	DIM baseDate = "1899/12/30"
	serial = VAL(serial)
	SELECT TRUE
		CASE reTest(format, "\[h+\]")
			Matches = reExecute(format, "\[(h+)\]")
			DIM hour = iif(hour12, Hour(serial) MOD 12, Hour(serial))
			RESULT = text(hour, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0))))
		CASE reTest(format, "^h+$")
			Matches = reExecute(format, "^(h+)$")
			hour = iif(hour12, Hour(serial) MOD 12, Hour(serial))
			RESULT = text(hour MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0))))
		CASE reTest(format, "\[m+\]")
			Matches = reExecute(format, "\[(m+)\]")
			RESULT = text(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0))))
		CASE format = "m"
			GETTIME(serial, baseDate)
			RESULT = text(G_TIME_MM, "0")
		CASE format = "mm"
			GETTIME(serial, baseDate)
			RESULT = G_TIME_MM2
		CASE format = "n"
			GETTIME(serial, baseDate)
			RESULT = G_TIME_NN
		CASE format = "nn"
			GETTIME(serial, baseDate)
			RESULT = G_TIME_NN2
		CASE format = "s"
			GETTIME(serial, baseDate)
			RESULT = text(G_TIME_SS, "0")
		CASE format = "ss"
			GETTIME(serial, baseDate)
			RESULT = G_TIME_SS2
		CASE format = "yyyy"
			GETTIME(serial, baseDate)
			RESULT = G_TIME_YY4
		CASE format = "yy"
			GETTIME(serial, baseDate)
			RESULT = COPY(G_TIME_YY4, 3, 2)
		CASE format = "e"
			SELECT TRUE
				CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(serial, "yyyy") - 2018
				CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(serial, "yyyy") - 1988
				CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(serial, "yyyy") - 1925
				CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(serial, "yyyy") - 1911
				CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(serial, "yyyy") - 1867
			SELEND
		CASE format = "ee"
			SELECT TRUE
				CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(text(serial, "yyyy") - 2018, "00")
				CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(text(serial, "yyyy") - 1988, "00")
				CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(text(serial, "yyyy") - 1925, "00")
				CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(text(serial, "yyyy") - 1911, "00")
				CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0
					RESULT = text(text(serial, "yyyy") - 1867, "00")
			SELEND
		CASE format = "g"
			SELECT TRUE
				CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "R"
				CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "H"
				CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "S"
				CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "T"
				CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "M"
			SELEND
		CASE format = "gg"
			RESULT = COPY(text(serial, "ggg"), 1, 1)
		CASE format = "ggg"
			SELECT TRUE
				CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "令和"
				CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "平成"
				CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "昭和"
				CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "大正"
				CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0;		RESULT = "明治"
			SELEND
		CASE format = "mmmmm"
			RESULT = COPY(text(serial, "mmmm"), 1, 1)
		CASE format = "mmmm"
			DIM month[] = "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
			RESULT = month[text(serial, "m") - 1]
		CASE format = "mmm"
			RESULT = COPY(text(serial, "mmmm"), 1, 3)
		CASE format = "dd"
			GETTIME(serial, baseDate)
			RESULT = text(G_TIME_DD2, "00")
		CASE format = "d"
			GETTIME(serial, baseDate)
			RESULT = text(G_TIME_DD, "0")
		CASE reTest(format, "^[ad]{3,4}$")
			Matches = reExecute(format, "([ad]{3,4})")
			GETTIME(serial, baseDate)
			DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"
			DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"
			DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
			DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday";
			RESULT = EVAL(Matches.Item(0).SubMatches(0) + "[" + getWeekday(G_TIME_WW, 1) + "]")
		CASE reTest(format, "(0+\.?0+)?%")
			Matches = reExecute(format, "(0+\.?0+)?%")
			RESULT = text(serial * 100, Matches.Item(0).SubMatches(0)) + "%"
		CASE reTest(format, "^\[DBNum\d{1,4}\](.*?)$")
			Matches = reExecute(format, "^\[DBNum(\d{1,4})\](.*?)$")
			DIM value = VAL(Matches.Item(0).SubMatches(0))
			DIM sss = text(serial, Matches.Item(0).SubMatches(1))
			Matches = reExecute(sss, "(\D+)?(\d+)(\D+)?")
			DIM res = ""
			FOR m = 0 TO Matches.Count - 1
				serial = Matches.Item(m).SubMatches(1)
				SELECT value
					CASE 1, 2
						DIM n[][9] = "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", + _
										"", "壱", "弐", "参", "四", "伍", "六", "七", "八", "九"
						DIM a[][3] = "", "十", "百", "千", + _
										"", "拾", "百", "阡"
						DIM b[][3] = "", "万", "億", "兆", + _
										"", "萬", "億", "兆"
						DIM r = ""
						DIM j = 0
						type = value - 1
						REPEAT
							DIM str = ""
							DIM n4 = serial MOD 10000
							FOR i = LENGTH(n4) TO 1 STEP -1
								s = COPY(n4, i, 1)
								IFB s = 1 AND a[type][LENGTH(n4)-i] <> "" THEN
									str = IIF(s, a[type][LENGTH(n4)-i], "") + str
								ELSE	
									str = n[type][s] + IIF(s, a[type][LENGTH(n4)-i], "") + str
								ENDIF
							NEXT
							IF str <> "" THEN r = str + b[type][j] + r
							j = j + 1
							serial = INT(serial / 10000)
						UNTIL serial = 0
						res = res + Matches.Item(m).SubMatches(0) + r + Matches.Item(m).SubMatches(2)
					CASE 3
						res = res + Matches.Item(m).SubMatches(0) + STRCONV(serial, SC_FULLWIDTH) + Matches.Item(m).SubMatches(2)
					CASE 4
						res = res + Matches.Item(m).SubMatches(0) + STRCONV(serial, SC_HALFWIDTH) + Matches.Item(m).SubMatches(2)
				SELEND
			NEXT
			RESULT = res
		CASE reTest(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$")
			Matches = reExecute(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$")
			DIM array = SPLIT(Matches.Item(0).SubMatches(1), "/")
			ampm = array[IIF(serial - INT(serial) >= 0.5, 1, 0)]
			hour12 = TRUE
			res = ""
			WITH Matches.Item(0)
				res = text(serial, .SubMatches(0), hour12) + ampm + text(serial, .SubMatches(2), hour12)
			ENDWITH
			RESULT = res
		CASE reTest(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?")
			Matches = reExecute(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?")
			FOR n = 0 TO Matches.Count - 1
				IF n = 0 THEN res = Matches.Item(n).SubMatches(0)
			NEXT
			FOR n = 0 TO Matches.Count - 1
				WITH Matches.Item(n)
					res = res + text(serial, .SubMatches(1), hour12) + .SubMatches(3)
				ENDWITH
			NEXT
			RESULT = res
		CASE format = "0/0"
			DIM separator = POS(".", serial)
			DIM g = 0
			IFB separator <> 0 THEN
				DIM keta = LENGTH(serial)
				DIM shift = POWER(10, keta - separator)
				IFB shift >= POWER(10, 15) THEN
					DIM position = 0
					FOR i = 0 TO 14
						IFB serial * POWER(10, i) - serial >= 1 THEN
							position = i
							BREAK
						ENDIF
					NEXT
					tmp = serial * POWER(10, position)
					FOR i = 1 TO 15
						r = (tmp * POWER(10, i)) / serial - (tmp / serial)
						a1 = tmp * POWER(10, i) - tmp
						IF a1 = INT(a1) THEN BREAK 
					NEXT
					DIM frac[] = a1, r
					g = GCD(frac)
					RESULT = (a1/g) + "/" + (r/g)
				ELSE
					DIM molecule = serial * shift	// 分子
					DIM denominator = shift		// 分母
					DIM nums[] = molecule, denominator
					g = GCD(nums)
					molecule = molecule / g
					denominator = denominator / g
					RESULT = molecule + "/" + denominator
				ENDIF
			ELSE
				RESULT = serial + "/1"
			ENDIF
		CASE reTest(format, "(0+)\.?(0+)?") AND UBound(SPLIT(format, ".")) <= 1 
			Matches = reExecute(format, "(0+)\.?(0+)?")
			len1 = LENGTH(Matches.Item(0).SubMatches(0))
			len2 = LENGTH(Matches.Item(0).SubMatches(1))
			DIM arr[] = LENGTH(INT(serial)), len1
			IFB POS(".", format) THEN
				RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0")
			ELSE
				RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0")
			ENDIF
	SELEND
FEND

//////////////////////////////////////////////////
// 【引数】
//   str : 時刻文字列。hh:nn:ss AM/PM、hh:nn AM/PM、hh AM/PM、hh:nn:ss、hh:nn、hh時nn分ss秒、hh時nn分のいずれかの形式を指定。 
// 【戻り値】
//   シリアル値 (例)0…00:00:00、0.5…12:00:00、0.999988425925926…23:59:59 
//////////////////////////////////////////////////
FUNCTION timeValue(str)
	DIM serial = 0
	DIM Matches
	DIM pattern = "(\d+)"
	DIM hh = "(0?[0-9]|1[0-2])"
	DIM ampm = "([AP]M|[ap]m)"
	SELECT TRUE
		CASE reTest(str, "\b" + hh + ":" + pattern + ":" + pattern + " " + ampm + "\b")
			Matches = reExecute(str, "\b" + hh + ":" + pattern + ":" + pattern + " " + ampm + "\b")
			WITH Matches.Item(0)
				serial = timeValue(.SubMatches(0) + " " + .SubMatches(3)) + VAL(.SubMatches(1)) / 1440 + VAL(.SubMatches(2)) / 86400
			ENDWITH
		CASE reTest(str, "\b" + hh + ":" + pattern + " " + ampm + "\b")
			Matches = reExecute(str, "\b" + hh + ":" + pattern + " " + ampm + "\b")
			WITH Matches.Item(0)
				serial = timeValue(.SubMatches(0) + " " + .SubMatches(2)) + VAL(.SubMatches(1)) / 1440
			ENDWITH
		CASE reTest(str, "\b" + hh + " " + ampm + "\b")
			Matches = reExecute(str, "\b" + hh + " " + ampm + "\b")
			WITH Matches.Item(0)
				serial = VAL(.SubMatches(0) MOD 12) + IIF(reTest(.SubMatches(1), "AM|am"), 0, 12)
				serial = serial / 24
			ENDWITH
		CASE reTest(str, "\b" + pattern + ":" + pattern + ":" + pattern + "\b")
			Matches = reExecute(str, "\b" + pattern + ":" + pattern + ":" + pattern + "\b")
			WITH Matches.Item(0)
				serial = VAL(.SubMatches(0)) / 24 + VAL(.SubMatches(1)) / 1440 + VAL(.SubMatches(2)) / 86400
			ENDWITH
		CASE reTest(str, "\b" + pattern + ":" + pattern + "\b")
			Matches = reExecute(str, "\b" + pattern + ":" + pattern + "\b")
			WITH Matches.Item(0)
				serial = VAL(.SubMatches(0)) / 24 + VAL(.SubMatches(1)) / 1440
			ENDWITH
		CASE reTest(str, "\b" + pattern + "時" + pattern + "分" + pattern + "秒")
			Matches = reExecute(str, "\b" + pattern + "時" + pattern + "分" + pattern + "秒")
			WITH Matches.Item(0)
				serial = VAL(.SubMatches(0)) / 24 + VAL(.SubMatches(1)) / 1440 + VAL(.SubMatches(2)) / 86400
			ENDWITH
		CASE reTest(str, "\b" + pattern + "時" + pattern + "分")
			Matches = reExecute(str, "\b" + pattern + "時" + pattern + "分")
			WITH Matches.Item(0)
				serial = VAL(.SubMatches(0)) / 24 + VAL(.SubMatches(1)) / 1440
			ENDWITH
		DEFAULT
			serial = ERR_VALUE
	SELEND
	RESULT = serial - INT(serial)
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND

アルファベットの大文字(A〜Z)でランダムに1文字取得

文字コードを65〜90(A〜Z)の範囲でランダムに取得し、それを文字に変換する。

UWSC
PRINT CHR(65 + RANDOM(90 - 65 + 1))
使用関数

ランダムな数値を返す

0以上10未満のランダムな数値を返す。

UWSC
PRINT RANDOM(10)
結果
プレーンテキスト
5
使用関数

特定の値を除くランダム値を取得

1行目の配列に取得しない値を格納した配列、5行目のRANDOMの引数が取得するランダム値の範囲、今回の場合0~19の範囲です。8行目のLENGTH関数でランダム値を格納した配列のサイズを取得し、10個になったら終了。

UWSC
DIM exclude[] = 0, 5, 8, 9, 14, 15
DIM array[-1]

WHILE TRUE
	DIM n = RANDOM(20)
	IF inArray(n, exclude) THEN CONTINUE
	arrayPush(array, n)
	IF LENGTH(array) = 10 THEN BREAK
WEND

FOR item IN array
	PRINT item
NEXT

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   処理後の配列の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   needle : 探す値 
//   haystack : 配列 
//   strict : 型も同じかチェックします 
// 【戻り値】
//   TRUE : 配列中に指定した値が存在する、FALSE : 配列中に指定した値が存在しない 
//////////////////////////////////////////////////
FUNCTION inArray( needle, haystack[], strict = FALSE)
	DIM res = FALSE
	FOR item IN haystack
		IFB needle = item THEN
			IFB strict THEN
				IFB VARTYPE(needle) = VARTYPE(item) THEN
					res = TRUE
					BREAK
				ENDIF
			ELSE
				res = TRUE
				BREAK
			ENDIF
		ENDIF
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
結果
プレーンテキスト
16
17
18
11
3
17
11
10
3
12
使用関数

ランダムに氏名を生成

UWSC
DIM lastName[] = "佐藤", "鈴木", "高橋", "田中", "伊藤", "渡辺", "山本", "中村", "小林", "加藤", _
					"吉田", "山田", "佐々木", "山口", "松本", "井上", "木村", "林", "斎藤", "清水", _
					"山崎", "森", "池田", "橋本", "阿部", "石川", "山下", "中島", "石井", "小川", _
					"前田", "岡田", "長谷川", "藤田", "後藤", "近藤", "村上", "遠藤", "青木", "坂本", _
					"斉藤", "福田", "太田", "西村", "藤井", "金子", "岡本", "藤原", "中野", "三浦", _
					"原田", "中川", "松田", "竹内", "小野", "田村", "中山", "和田", "石田", "森田", _
					"上田", "原", "内田", "柴田", "酒井", "宮崎", "横山", "高木", "安藤", "宮本", _
					"大野", "小島", "谷口", "今井", "工藤", "高田", "増田", "丸山", "杉山", "村田", _
					"大塚", "新井", "小山", "平野", "藤本", "河野", "上野", "野口", "武田", "松井", _
					"千葉", "岩崎", "菅原", "木下", "久保", "佐野", "野村", "松尾", "市川", "菊地", _
					"杉本", "古川", "島田", "大西", "水野", "桜井", "高野", "吉川", "渡部", "山内", _
					"飯田", "西田", "菊池", "西川", "小松", "北村", "安田", "五十嵐", "川口", "関", _
					"平田", "中田", "久保田", "服部", "東", "岩田", "土屋", "川崎", "福島", "本田", _
					"辻", "樋口", "秋山", "永井", "田口", "山中", "中西", "吉村", "川上", "石原", _
					"大橋", "松岡", "馬場", "浜田", "森本", "星野", "浅野", "矢野", "大久保", "松下", _
					"小池", "吉岡", "野田", "荒木", "大谷", "内藤", "松浦", "熊谷", "黒田", "尾崎", _
					"永田", "望月", "川村", "田辺", "荒井", "松村", "堀", "大島", "早川", "平井", _
					"栗原", "菅野", "西山", "広瀬", "横田", "石橋", "萩原", "岩本", "片山", "関口", _
					"宮田", "大石", "高山", "吉野", "本間", "須藤", "岡崎", "小田", "伊東", "鎌田", _
					"上原", "篠原", "小西", "松原", "福井", "古賀", "小泉", "大森", "成田", "南", _
					"奥村", "内山", "川島", "沢田", "桑原", "三宅", "片岡", "杉浦", "富田", "岡", _
					"八木", "奥田", "小沢", "松永", "北川", "関根", "河合", "平山", "牧野", "白石", _
					"今村", "寺田", "青山", "中尾", "小倉", "渋谷", "上村", "小野寺", "大山", "足立", _
					"岡村", "坂口", "天野", "多田", "佐久間", "根本", "豊田", "田島", "飯塚", "角田", _
					"村山", "武藤", "白井", "西", "竹田", "宮下", "榎本", "塚本", "神谷", "坂田", _
					"水谷", "児玉", "坂井", "齋藤", "浅井", "小原", "岡部", "森下", "神田", "小笠原", _
					"中井", "植田", "河村", "宮川", "稲垣", "前川", "大川", "松崎", "長田", "若林", _
					"飯島", "谷", "大沢", "石塚", "安部", "堀内", "及川", "田代", "中嶋", "江口", _
					"山根", "中谷", "岸本", "荒川", "本多", "西尾", "森山", "岡野", "金井", "細川", _
					"今野", "戸田", "稲葉", "安達", "津田", "森川", "落合", "土井", "村松", "星", _
					"町田", "三上", "畠山", "岩井", "長尾", "堤", "中原", "野崎", "中沢", "金田", _
					"米田", "松山", "杉田", "堀田", "西野", "三好", "山岸", "佐伯", "黒川", "西岡", _
					"大竹", "泉", "甲斐", "大木", "笠原", "堀江", "岸", "川田", "徳永", "須田", _
					"黒木", "山川", "古田", "榊原", "梅田", "新田", "三木", "野中", "大城", "村井", _
					"金城", "奥山", "土田", "滝沢", "大村", "川端", "井口", "梶原", "大場", "宮城", _
					"比嘉", "長島", "吉原", "宮内", "金沢", "安井", "庄司", "大内", "茂木", "荻野", _
					"日高", "松島", "向井", "下田", "塚田", "石黒", "西本", "奥野", "竹中", "広田", _
					"嶋田", "栗田", "藤川", "福本", "北野", "藤野", "宇野", "川原", "丹羽", "谷川", _
					"小谷", "青柳", "吉本", "藤岡", "竹下", "竹本", "古谷", "緒方", "藤村", "平川", _
					"亀井", "高島", "三輪", "篠崎", "藤沢", "窪田", "宮原", "根岸", "高井", "下村", _
					"高瀬", "山村", "川本", "柳沢", "小澤", "横井", "吉沢", "出口", "武井", "小森", _
					"竹村", "長野", "宮沢", "志村", "平松", "臼井", "福岡", "黒沢", "溝口", "田原", _
					"稲田", "浅田", "筒井", "柳田", "奧村", "永野", "大原", "冨田", "林田", "瀬戸", _
					"大平", "手塚", "入江", "篠田", "福永", "北原", "富永", "矢島", "小出", "湯浅", _
					"鶴田", "沼田", "高松", "堀口", "長岡", "岩瀬", "山岡", "大田", "石崎", "澤田", _
					"大槻", "石山", "池上", "堀川", "二宮", "相馬", "園田", "柏木", "島崎", "奧田", _
					"平岡", "花田", "杉原", "加納", "村瀬", "川野", "内海", "片桐", "長沢", "倉田", _
					"野沢", "河原", "福原", "秋元", "越智", "西原", "松野", "笠井", "小坂", "田畑", _
					"北島", "渡邊", "日野", "谷本", "千田", "吉井", "深沢", "西沢", "相沢", "徳田", _
					"原口", "小柳", "米山", "細谷", "新谷", "田上", "今泉", "菅", "浜野", "森岡"

DIM boys[] = "葵", "一輝", "一樹", "瑛太", "英樹", "海", "海斗", "海翔", "学", "貴大", _
				"輝", "空", "勲", "結翔", "健", "健一", "健太", "健太郎", "康平", "弘", _
				"浩", "浩一", "浩二", "浩之", "剛", "実", "樹", "修", "秀樹", "駿", _
				"淳", "勝", "勝利", "匠", "昇", "新", "進", "崇", "正", "清", _
				"誠", "聡", "蒼", "蒼空", "太一", "太陽", "大雅", "大介", "大貴", "大輝", _
				"大樹", "大地", "大輔", "大和", "大翔", "拓海", "拓哉", "拓也", "達也", "智也", _
				"朝陽", "直樹", "直人", "哲也", "徹", "博", "博之", "楓太", "勉", "歩夢", _
				"豊", "湊", "稔", "明", "茂", "優", "優太", "優斗", "勇", "悠", _
				"悠希", "悠真", "悠人", "悠太", "悠斗", "悠翔", "祐介", "裕太", "雄太", "雄大", _
				"洋平", "陽向", "陽太", "陽大", "陽斗", "陽翔", "翼", "陸", "陸斗", "律", _
				"隆", "竜", "竜也", "龍生", "亮", "亮太", "凌", "涼太", "諒", "蓮", _
				"和彦", "和夫", "和也", "翔", "翔太", "翔平", "颯", "颯真", "颯太"
DIM girls[] = "あゆみ", "さくら", "ひなた", "めぐみ", "ゆかり", "亜美", "愛", "愛菜", "愛美", "愛莉", _
				"葵", "茜", "綾乃", "杏", "杏奈", "悦子", "佳奈", "花", "花音", "芽依", _
				"絵美", "久美子", "京子", "琴音", "啓子", "恵", "恵子", "恵美", "恵美子", "結愛", _
				"結衣", "結月", "結菜", "幸子", "弘子", "浩子", "香織", "沙織", "彩", "彩夏", _
				"彩花", "彩香", "彩乃", "菜月", "菜々子", "菜摘", "咲良", "桜", "詩", "詩織", _
				"七海", "純子", "順子", "勝子", "信子", "心愛", "心結", "心咲", "心春", "心優", _
				"真央", "真由", "真由美", "成美", "節子", "千夏", "千尋", "早紀", "太陽", "大和", _
				"智子", "智美", "直子", "直美", "紬", "典子", "桃花", "桃子", "瞳", "奈々", _
				"美羽", "美紀", "美結", "美月", "美香", "美咲", "美桜", "美代子", "美智子", "美穂", _
				"美優", "百花", "舞", "楓", "萌", "麻衣", "麻衣子", "麻美", "未来", "明日香", _
				"明美", "唯", "優衣", "優花", "優子", "優太", "優奈", "友美", "由佳", "由美", _
				"由美子", "裕子", "裕美", "洋子", "遥", "陽葵", "陽菜", "陽子", "理恵", "里奈", _
				"玲奈", "和子", "凛", "澪", "翔太", "莉子", "莉奈", "遙香", "凜"

//DIM boys[] = "碧", "陽翔", "蒼", "朝陽", "蓮", "湊", "結翔", "悠真", "陽向", "樹", "律", "暖", "大翔", "颯真", "大和", "凪", "蒼空", "伊織", "湊斗", "陽", "琉生", "朔", "颯", "晴", "陽大", "陽斗", "陽太", "新", "碧人", "蒼大", "陸", "悠", "旭", "悠人", "結斗", "碧斗", "蒼真", "大雅", "悠翔", "奏汰", "岳", "颯太", "湊翔", "悠斗", "大晴", "晴翔", "葵", "律希", "悠生", "一颯", "怜", "奏翔", "琥太郎", "颯人", "海翔", "絢斗", "楓", "櫂", "蒼生", "楓真", "海斗", "陸斗", "奏太", "仁", "大河", "湊大", "蒼翔", "柊", "善", "翔", "颯汰", "奏多", "颯斗", "壮真", "凌久", "千颯", "怜央", "遥斗", "空", "理人", "歩", "迅", "虎太郎", "結仁", "光希", "千隼", "悠陽", "大智", "伊吹", "瑛太", "蒼士", "理仁", "結人", "湊音", "奏斗", "陽葵", "凌空", "理玖", "想", "響", "蒼太"
//DIM girls[] = "陽葵", "凛", "結菜", "芽依", "詩", "陽菜", "葵", "莉子", "紬", "咲茉", "結愛", "澪", "結月", "杏", "咲良", "翠", "琴葉", "結衣", "彩葉", "心春", "美桜", "凪", "柚葉", "心陽", "莉緒", "莉央", "朱莉", "美月", "凜", "さくら", "凪咲", "心結", "芽生", "依茉", "杏奈", "陽菜乃", "紗奈", "光莉", "楓", "愛茉", "紗菜", "花", "蘭", "陽咲", "一華", "花音", "ひなた", "紬希", "琴音", "莉愛", "風花", "一花", "心晴", "柚希", "美結", "和花", "詩乃", "凪紗", "乃愛", "茉白", "鈴", "百花", "結", "雫", "碧", "ひかり", "結葵", "桜", "あかり", "柚乃", "紗良", "愛莉", "咲那", "明莉", "結心", "菜月", "永茉", "七海", "葵衣", "愛菜", "絃葉", "咲希", "ひまり", "すず", "菫", "彩羽", "美羽", "渚", "玲奈", "結乃", "紬葵", "柚月", "柚羽", "六花", "恵茉", "絃", "ひより", "実桜", "梨乃", "華"

FOR i = 1 TO 20
	PRINT arrayRand(lastName) + " " + IIF(RANDOM(2)=0, arrayRand(boys), arrayRand(girls))
NEXT

//////////////////////////////////////////////////
// 【引数】
//   array : 配列 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayRand(array[])
	RESULT = array[RANDOM(LENGTH(array))]
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND
結果
プレーンテキスト
中井 勉
大森 豊
福島 健太郎
辻 純子
酒井 萌
小田 拓海
山村 綾乃
西原 百花
奥田 優子
中田 和子
大村 啓子
永井 優子
下田 大貴
平井 大翔
藤沢 美結
松永 翔平
宇野 直樹
内藤 駿
中尾 竜也
江口 ひなた
使用関数

0以上1未満の乱数を返す

UWSC
PRINT RANDOM()
結果
プレーンテキスト
0.146521859802306
使用関数

マウスカーソルをランダムな位置に移動

UWSC
DIM x = G_SCREEN_W
DIM y = G_SCREEN_H

MMV(RANDOM(x), RANDOM(y))
使用関数

関連記事

ABS関数 (スクリプト関数)
引数の絶対値を求めます。
ARCCOS関数 (スクリプト関数)
引数の逆余弦を求めます。
CEIL関数 (スクリプト関数)
正の方向へ切り上げた数値を返します。
LN関数 (スクリプト関数)
自然対数を求めます。
LOGN関数 (スクリプト関数)
常用対数を求めます。
ZCUT関数 (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
isOdd関数 (自作関数)
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg関数 (自作関数)
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
ARCSIN関数 (スクリプト関数)
引数の逆正弦を求めます。
EXP関数 (スクリプト関数)
自然指数関数を求めます。