マルチプレイなら『シン・VPS』がおすすめ!

【確率を扱うコマンド】ランダム性を再現する方法3選【マイクラ】

【確率を扱うコマンド】ランダム性を再現する方法3選【マイクラ】

この記事では、Minecraft Java Edition(バージョン1.18.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

コマンドで乱数を扱いたいマインクラフター
「コマンドでランダム性を再現したいんだけど、どうすればいいの? そのやり方について教えて欲しいな」

こんな疑問を解決します!

本記事の内容
  • ランダム性を再現する方法3選
  • それぞれのやり方

こんにちは! マインクラフターのなつめ(@natsume_717b)です。

なつめ

マイクラ歴は5年程で、最近は脱出マップを配布・制作しています!
→配布マップ・ダウンロードページ

この記事では、コマンドを使う際にランダム性を持たせる方法について解説しています。

コマンドは指示された通りの動きを行いますので、ランダムな要素を扱うのは難しいのではないかと考える方も多いのではないでしょうか。

ですが、意外にも3つの方法でランダム性を作り出すことが可能です。
それぞれの方法のやり方などを解説しているので、ぜひ参考にしてくださいね。

それでは、さっそく見ていきましょう!



ランダム性を再現する方法3選

ランダム性を再現するには、3つの方法が挙げられます。
具体的には以下の3つですね。

  1. ターゲットセレクターに@r(ランダムなプレイヤー)を使う。
  2. spreadplayerコマンドを使って、ランダムにテレポートした先の座標を利用する。
  3. predicateを使って、コマンドの実行される確率を指示する。

それぞれランダム性を作り出すことのできる方法ですが、向き不向きがあります。

例えば、ボタンを押した時に10%の確率で爆発が起きてしまうというようなコマンドを組む場合は③のpredicateを使うのがスマートです。
①と②ではコマンドを複数組む必要があるので、かなり面倒と言えますね。

なので、それぞれのやり方と特徴を抑えるのが大事です。

というわけで、次の項目でそれぞれのやり方について解説していきます。

それぞれのやり方

上述したランダム性を作る方法を実際に解説していきます。

1:@r

@rはターゲットセレクターの一つです。
なので、ターゲットセレクターを入力する項目に@rと入力するだけで使用することができます。

giveコマンドで試してみると以下のようになりますね。

/give @r minecraft:diamond 1

上記のコマンドを実行することで、ワールドにいるプレイヤー誰かにダイヤモンドを1つ付与します。

難しいことはないですね。
ターゲットセレクターにランダム性を求めたい時に@rを使えばOKです。

ターゲットセレクターについて詳しく知りたい方は以下の記事をどうぞ。

コマンドの対象は全部で6種類!それぞれが意味するものを解説します【マイクラ】

2:spreadplayerコマンド

spreadplayerコマンドは元々プレイヤーを散開させるコマンドです。
噛み砕いて言うと、等間隔に散らばせるということになります。

この時、プレイヤー同士は等間隔に離れているものの、指定した範囲内にランダムにテレポートします。
なので、そのランダム性を利用しようということですね。

筆者が使ったことのある使い方としては、チェストの中身をランダムに決定するために使用したことが挙げられます。

executeコマンドで防具立てをspreadplayerコマンドの実行者として実行し、防具立てを大量にあるチェストの上にテレポートさせます。

チェストはspreadplayerコマンドの範囲内に敷き詰めます。

そうしてその防具立ての下にあるチェストの中身のデータを抜き取って、実際に遊ぶステージにあるチェストにそのデータを適用させます。

小難しくて何を言っているのか分からないという方は、FortniteやAPEXを思い浮かべてもらえると幸いです。
上記のゲームでは、はじめに武器を得るために宝箱を漁るかと思いますが、その中身が常に同じにならないようにランダムに決定している仕組みを再現しているような感じです。

また、spreadplayerコマンドについては以下の記事をどうぞ。

【Java版】ランダムな位置にテレポートする方法!【コマンド1つでOK】

3:predicate

最後に紹介するのはpredicateです。
predicateを使うには、データパックを作成して適切にファイルを作る必要があります。

なので少々面倒なのですが、この方法でしかコマンドの実行される確率を手軽に扱うことができません。

例えばですが、75%の確率でしか実行されないコマンドを作りたい場合は以下のようなjsonファイルを作成しておく必要があります。

{
  "condition": "random_chance",
  "chance": 0.75
}

condition

conditionの部分は弄る必要がありません。
“random_chance”という文字列が、このjsonファイルが確立を扱っていることの指示になります。

chance

chanceの部分が確率の値を指示しています。
1だと100%と同じ意味で、0だと0%ですね。

なので、75%を指示したい場合には0.75となっています。

この値を変更することで、好きな確率でコマンドを実行されるかどうかを指示できます。


実際に使ってみると以下のようになります。

execute if predicate testpredicate:percent run tellraw @p "75%の確率"

execute if predicateでpredicateを使用することを指示しつつ、その後にどのjsonファイルなのかを指示しています。

今回はtestpredicate:percentとなっていますので、testpredicateというファイルにあるpercentという名前のjsonファイルを参考しています。
(percent.jsonの中身は先述したjsonファイルの中身と同じです)

なので、上記のコマンドを実行すると75%の確率で、「75%の確率」というメッセージが表示されるようになっています。

実際に上記のコマンドを試してみたい方は以下のファイルをダウンロードしてください。

ダウンロードするためのパスワードはprediPercentになっています。

ダウンロードしたらzipファイルになっていますので、まずは解凍してください。

そうして「確率お試しファイル」というフォルダが出てきたら、それを試してみたいワールドのdatapacksに入れればOKです。

savesから適用したいワールドを選択し、その奥にあるdatapacksという項目の中に入れてくれれば、実際に試せるようになりますよ。

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • ランダムなプレイヤーにダイヤモンドを1つ付与するコマンド
/give @r minecraft:diamond 1
  • testpredicateというファイルにあるpercent.jsonを基にtellrawコマンドを実行するもの
execute if predicate testpredicate:percent run tellraw @p "75%の確率"
ポイント
  • ランダム性を作り出すには主に3つの方法があり、それぞれに何をランダムにするのかによって向き不向きがあります。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】