〜 ナンバー 〜
乱数でマイナス値や数十、数百万などの値を取得

設定、取得及び演算できる数値の範囲は「−2,147,483,648〜2,147,483,647」ですが、
rnd命令(関数)は、値の取得が「0〜32767」のいずれかでしか取得できません。
マイナス値であったり、32768以上の乱数を取得したい場合、基になる数をずらしてみましょう。
例えば「−100〜100」の範囲を取得したい場合、パラメータに指定する乱数サイズの部分を201とし、
「取得した値−100」を返せば、希望の範囲に対応させることが可能です。
尚、下記モジュールは上記通りに、乱数範囲の上限値、または下限値をスライドさせているだけですので、
範囲自体は最大32768種に変わりありません。
もし、32769種以上の範囲を実現させたい場合は、コチラを参考にしてみてください。
	

rndex 最小値, 最大値
最小値取得範囲の下限値を指定する。
最大値取得範囲の上限値+1を指定する。(rnd命令と同じ)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#module
#deffunc rndex int, int
	mref rmin, 0 : mref rmax, 1
	mref stt, 64
	rnd stt, rmax - rmin
	stt += rmin
	return
#global

	randomize
	repeat 100
		rndex -100, 100
		pos cnt \ 10 * 60 + 10, cnt / 10 * 30 + 10 : mes stat // 乱数結果を表示
	loop
	stop

結果 = rndex(最小値, 最大値)
結果生成したランダム値の格納先を指定する。
最小値取得範囲の下限値を指定する。
最大値取得範囲の上限値+1を指定する。(rnd関数と同じ)

 1
 2
 3
 4
 5
 6
 7
 8
 9
#module
#defcfunc rndex int rmin, int rmax
	return rnd(rmax - rmin) + rmin
#global

	randomize
	repeat 100
		pos cnt \ 10 * 60 + 10, cnt / 10 * 30 + 10 : mes rndex(-100, 100) // 乱数を表示
	loop