[
板情報
|
R18ランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
メール
|
1-
101-
この機能を使うにはJavaScriptを有効にしてください
|
汎用関数・ライブラリ総合スレ
99
:
あなたの名前を入力してください
:2019/11/16(土) 13:02:28 ID:DWT00LII
CC0ライセンスでどぞ
;デモ関数
@HOGE
#DIM HOGE
#DIM RAND_ID, 3
VARSET RAND_ID
RAND_ID = 50, 30, 20
;数値を相対的な確率として、RAND_IDの添字0〜2を返す
HOGE = ARRAY_HIT(RAND_ID, VARSIZE("RAND_ID"))
SELECTCASE HOGE
CASE 0
PRINTFORML 50%でここ
CASE 1
PRINTFORML 30%でここ
CASE 2
PRINTFORML 20%でここ
CASE -1
PRINTFORML エラー出たらここ
ENDSELECT
VARSET RAND_ID
RAND_ID = 50, 30, 20
;配列に記録した数値を等確率でランダムに返す、表示されるのは50、30、20
HOGE = RAND_CHOICE1(RAND_ID)
PRINTFORMW いべんと{HOGE}
;----------------------------------------------------------------------------------------------------
;連続した数字を抽選し、確率偏らせたい場合用
;----------------------------------------------------------------------------------------------------
@ARRAY_HIT(HIT_LIST, LIST_SIZE)
#FUNCTION
#DIM REF HIT_LIST ;確率分布リスト
#DIM LIST_SIZE;確率分布リストのサイズ
#DIM CHK_ID ;判定対象となる要素
#DIM HIT_RAND ;抽選乱数処理
LOCAL = MAX(SUMARRAY(HIT_LIST, 0, LIST_SIZE),1)
HIT_RAND = RAND(0, LOCAL)
;DEBUGPRINTFORML LIST_SIZE={LIST_SIZE} HIT_RAND{HIT_RAND}
FOR CHK_ID, 0, LIST_SIZE
SIF HIT_RAND < SUMARRAY(HIT_LIST, 0, CHK_ID + 1)
RETURNF CHK_ID
NEXT
;THROW 抽選失敗
;カウンター抽選失敗によるTHROW落ちが発生してるのでー1を返すことにする
RETURNF -1
;----------------------------------------------------------------------------------------------------
;均等分布で数字(自由設定)が直接欲しい場合用
;配列の終端判定はVARSIZE利用(配列長いっぱいまで使い切る必要がある)
;----------------------------------------------------------------------------------------------------
@RAND_CHOICE1(LIST)
#FUNCTION
#DIM REF LIST
#DIM DYNAMIC LIST_SIZE
LIST_SIZE = VARSIZE("LIST")
SIF LIST_SIZE <= 0
RETURNF -1
RETURNF LIST:(RAND:LIST_SIZE)
;----------------------------------------------------------------------------------------------------
;配列の終端判定を-1検索に変更した
;長い配列の途中まででも使うことが出来る(ただしLIST内に-1を指定できない)
;----------------------------------------------------------------------------------------------------
@RAND_CHOICE2(LIST)
#FUNCTION
#DIM REF LIST
#DIM DYNAMIC LIST_SIZE
LIST_SIZE = FINDELEMENT(LIST, -1)
SIF LIST_SIZE <= 0
RETURNF -1
RETURNF LIST:(RAND:LIST_SIZE)
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板