質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1266閲覧

p5.js(JavaScript)でrandamの確率を制御する方法

beginner_L

総合スコア6

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/09/04 14:57

8分の1の確率で結果が変わるプログラムを作りたいのですが、
randomを用いて書いたコードがうまく働きません。下記のコードを数秒実行した結果、
A=13, B=33, C=33, D=31, E=18, F=6, G=1
と、徐々に確率が下がる結果になってしまいました。
他の方の似た質問への回答でランダムで0〜7を発生させてその解を使うというものを読んだので、この例がうまくいかなければそちらで試そうかと思っていますが、下記のコードでなぜ配分が変わってしまうのか理解できず、ご指摘いただけたら嬉しいです。どうぞよろしくお願いいたします。

function draw() { if (random(8) > 7) { print('A'); } else if (random(8) > 6) { print('B'); } else if (random(8) > 5) { print('C'); } else if (random(8) > 4) { print('D'); } else if (random(8) > 3) { print('E'); } else if (random(8) > 2) { print('F'); } else if (random(8) > 1) { print('G'); } else if (random(8) > 0) { print('H'); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/09/04 15:20

その、random関数の処理の中身を提示いただかないとなんとも言えません。
beginner_L

2020/09/04 15:27

すみません、中身がどれを指すのかわからなかったのですが、下記のような、1/8の確率で色が変わるものを想定しています。 function mouseClicked() { if (random(8) > 7) { fill(100, 100, 100); } else if (random(8) > 6) { fill(100, 0, 100); } else if (random(8) > 5) { fill(100, 100, 0); } else if (random(8) > 4) { fill(0, 100, 100); } else if (random(8) > 3) { fill(200, 200, 200); } else if (random(8) > 2) { fill(200, 0, 200); } else if (random(8) > 1) { fill(200, 200, 0); } else if (random(8) > 0) { fill(200, 0, 200); } rect(0, 0, 100, 100); }
miyabi_takatsuk

2020/09/04 15:39

私が聞きたかったことは違う部分ですが、ひとまず回答させていただきました。 random関数は素のjavascriptでは存在しないので、その中身の処理がわからないとなんとも言えないのです。
beginner_L

2020/09/04 15:48

こちらも丁寧に教えていただきありがとうございます。ごめんなさい、私の学習範囲を軽く飛び越えたところのようで、これについてはこれから調べてみます…。
beginner_L

2020/09/04 16:02

リンクをどうもありがとうございました!しかし理解が追い付きませんでした…><
guest

回答1

0

ベストアンサー

下記の可能性があります。

  • random関数の使い方を間違っている

再度ご確認下さい。

  • random関数の精度が低い

JavaScriptにおいて、精度が高いランダマイザーアルゴリズムはいくつか散見されるので、
別のアルゴリズムを使用してみるのもありかと。

  • 条件分岐の不備

ifだと頭から総当たりなので、不備がある可能性があります。
0〜8の整数と決まっているなら、
switch構文の方が妥当でしょう。
構文を見直して下さい。

  • そもそもの試行回数が圧倒的に少ない

確率は、とにかく偏るものです。
確からしさにすぎないので。
何万回試行して、ようやっと確率の数値に収束していく、とかそういうレベルの代物です。
例えばガチャで、1%の確率のドロップのレアアイテムを引き当てるのに、1000回引いても当たらない時もあれば、1回で引き当てる時もありますよね?
それくらい確率は偏りが出るものです。
質問者さんのように、数百回程度であれば、偏りが出る可能性は十分あります。

投稿2020/09/04 15:37

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginner_L

2020/09/04 15:42

早々にどうもありがとうございました!関数の精度や試行回数は思いもよらなかったご指摘でした。switch構文も調べてみます。でも使い方が間違っている可能性が高そうですね…。本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問