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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

548閲覧

結果の最後が何度やっても同じ値になる

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/17 01:12

編集2021/08/17 01:22

###解決したいこと
Pythonで0,1,2どれが一番出るのか確率を調べているのですが、最後の方の結果の値が何度やっても変わりません。
これは確率的にこうなっているのか、プログラムのミスなのか、わかる方教えていただけますでしょうか。

###結果の値

(8300万回以下は省略) 【83000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【84000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【85000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【86000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【87000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【88000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【89000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【90000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【91000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【92000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【93000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【94000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【95000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【96000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.35 【97000000回目】勝つ確率 : 33.33 負ける確率 : 33.32 引き分けになる確率 : 33.35 【98000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.34 【99000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.34 【100000000回目】勝つ確率 : 33.33 負ける確率 : 33.33 引き分けになる確率 : 33.34

該当のソースコード

python

1import random 2 3count2 = 0 4count = 0 5win = 0 6lose = 0 7flat = 0 8for i in range(100000000): 9 count += 1 10 rand = random.randrange(3) 11 if rand == 0: 12 win += 1 13 elif rand == 1: 14 flat += 1 15 else: 16 lose += 1 17 if count == 1000000: 18 count2 += 1000000 19 win2 = win/count2*100 20 flat2 = flat/count2*100 21 lose2 = lose/count2*100 22 with open('result.txt', 'a', encoding='utf-8') as f: 23 f.write('【{}回目】勝つ確率 : {:.2f} 負ける確率 : {:.2f} 引き分けになる確率 : {:.2f}\n'.format(count2,win2,lose2,flat2)) 24 print('【{}回目】勝つ確率 : {:.2f} 負ける確率 : {:.2f} 引き分けになる確率 : {:.2f}\n'.format(count2,win2,lose2,flat2)) 25 count = 0 26f.close() 27

試したこと

count変数の値を変えた
0,1,2だけではなく、0,1,2,3,4 などと数字を増やした。

補足情報(FW/ツールのバージョンなど)

3.8.2

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

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

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

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

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

maisumakun

2021/08/17 01:17

> 最後の方の結果の値が何度やっても変わりません。 「どのような値が出る」と思っていたものが、「実際にはどうだった」のでしょうか?
maisumakun

2021/08/17 01:28

どうなることを期待していたのですか?
退会済みユーザー

退会済みユーザー

2021/08/17 01:30

もう少し数字がばらけることを期待していました。
otn

2021/08/17 01:41 編集

質問ポイントが分かりません。 1/3からのずれ方がいつも同じという事ですか? 毎回、33.33 33.33 33.34 で、33.34 33.33 33.33 などになったことが無いという意味の質問? それなら「たまたま」だと思います。何度もやれば 33.34 33.33 33.33 なども出るかと。
guest

回答4

0

これは確率的にこうなっているのか、プログラムのミスなのか、わかる方教えていただけますでしょうか。

上記で言うと「確率的にこうなっている」が正解だと思います。
他の方もおっしゃっていますが、確率は試行すればするほど偏りが無くなり、確率通りの結果に近づいていきます。

ググって見つけたサイトですが、考え方として、以下が参考になるのではないでしょうか。
http://fanblogs.jp/krps13/archive/45/0

投稿2021/08/17 01:44

belgh

総合スコア27

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

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

0

ベストアンサー

もう少し数字がばらけることを期待していました。

期待が妥当でないだけです。

大数の法則により、回数を増やせば増やすほど、結果は期待値に収束していきます。

投稿2021/08/17 01:31

maisumakun

総合スコア146018

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

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

0

random で生成される乱数ってのは、擬似乱数というもので、完全な乱数ではありません。
とある計算式で算出される乱数(にみえる数)で、特別の配慮がない場合は、n番目に出てくる数値はすべて一致します

ということで、いくら繰り返し実行しても、出てくる数値は同じになるため、結果も同じになります

これをどうにかしたいなら、seedメソッドでなんやかやしましょう

投稿2021/08/17 01:31

y_waiwai

総合スコア88042

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

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

maisumakun

2021/08/17 01:34

プログラム全体を何度も再実行するならseedの考慮も必要になりますが、「一度実行したプログラムで乱数を生成させ続ける」という状況では、seedは直接関係する事象ではないと考えます。
guest

0

ループの中で

count = 0

しているからでしょう。

投稿2021/08/17 01:24

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問