更新日:
基本の書き方
/random value 1..6
/random roll 1..6
どちらも1から6のどれかを選びます。違いは結果の見え方です。
| 書き方 | 結果が見える人 | 使いどころ |
|---|---|---|
value | 実行した人だけ | コマンドの中で数を使うとき |
roll | チャットで全員 | みんなの前でサイコロを振るとき |
範囲は 最小..最大 の形で、両方とも書きます。1.. のように片方だけでは使えません。
結果をスコアに入れる
出た数を仕組みに使うには、/execute store でスコアボードに保存します。
/scoreboard objectives add dice dummy
/execute store result score @p dice run random value 1..6
/tellraw @a ["",{"selector":"@p"},{"text":" の目は "},{"score":{"name":"@p","objective":"dice"}}]
1行目でスコアを作り、2行目でサイコロの目を保存し、3行目で全員に知らせます。表示の作り方は tellrawコマンドの基本 で詳しく説明しています。
出た数で処理を分ける
/execute if score @p dice matches 6 run give @p minecraft:diamond 1
/execute if score @p dice matches 1..5 run say はずれ!
matches 6 は「6のとき」、matches 1..5 は「1から5のとき」です。確率を変えたいときは範囲を変えます。たとえば random value 1..100 にして matches 1..10 を当たりにすると、当たる確率は10%になります。
くじ引きで1人を選ぶ
プレイヤーの中から1人を選ぶだけなら、/random よりセレクターの @r が手軽です。
/tag @r add winner
/tellraw @a ["",{"selector":"@a[tag=winner]"},{"text":" が当たりました!","color":"gold"}]
次の抽選の前に /tag @a remove winner でタグを外しておきます。タグの使い方は tagコマンドの使い方 を見てください。
同じ順番の乱数を使う(シーケンス)
/random value 1..6 mygame:dice
/random reset mygame:dice 12345
最後に名前(シーケンスID)を付けると、その名前ごとに乱数の流れが記録されます。reset で種を決めると、同じ順番で数が出るので、テストやイベントのやり直しに便利です。シーケンスを使う形と reset は、OP権限(レベル2以上)が必要です。
統合版でランダムな数を出す
統合版には /random がありません。かわりに、スコアボードの random を使います。
/scoreboard objectives add dice dummy
/scoreboard players random @p dice 1 6
これで、近くのプレイヤーの dice に1から6のどれかが入ります。そのあとの処理は、Java版と同じように execute if score で分けられます。
うまくいかないときの確認ポイント
- 「不明なコマンド」と出る:Java版1.20.2より前の版か、統合版です。バージョンは バージョンの確認方法 で調べられます。
- 範囲のエラー:
1..6のように最小と最大の両方を書きます。最小が最大より大きいと使えません。 - スコアが0のまま:
execute store result scoreの対象と、表示している対象が同じか確かめます。
よくある質問
/random はOPでなくても使えますか?
シーケンスIDを付けない value と roll は、OP権限がないプレイヤーでも使えます。シーケンスIDを付ける形と reset には、OP権限(レベル2以上)が必要です。
1.20.1以前のJava版でランダムにするには?
/random はないので、@r や @e[sort=random,limit=1] で対象をランダムに選ぶ方法がよく使われます。
確率を細かく決めたいです。
範囲を1..100にして、当たりにする数の範囲を変えます。matches 1..25 なら25%です。