wadmdmaw 发表于 2022-3-19 12:59:51

掷骰子验证问题

题目:掷骰子3次,有人说掷出666和253的概率是一样的,请用程序模拟大量的人,大量的次数掷骰子的过程,验证这种说法是不是对的。

import random
s=0
k=0
for i in range(1,1000000,1):
    a=random.sample('123456',3)
    if a=="['6', '6', '6']":
      s=s+1
    if a=="['2', '5', '3']":
      k=k+1
print(s,k)

请问这样写代码,调整了几次i的终值,输出的s和k的结果都是0,是哪里出问题了呢?这个应该如何编写呢?

isdkz 发表于 2022-3-19 13:02:21

import random
s=0
k=0
for i in range(1,1000000,1):
    a=random.sample('123456',3)
    if a==['6', '6', '6']:       # 不要给列表加上双引号,不然它就是字符串了
      s=s+1
    if a==['2', '5', '3']:       # 去掉双引号
      k=k+1
print(s,k)

傻眼貓咪 发表于 2022-3-19 14:09:30

复习复习:{:10_254:}{:10_254:}{:10_254:}import random as rand

throw = lambda: rand.choice(range(1, 7))
tosses = lambda n:
check = lambda A, B: A == B

A =
B =

a = b = 0

for n in range(1000000):
    C = sorted(tosses(3))
    a += check(A, C)
    b += check(B, C)

print(f"掷骰子 3 次,掷出 6、6、6 的次数是 {a}({a/1e6*100}%),掷出 2、5、3 的次数是 {b}({b/1e6*100}%)")掷骰子 3 次,掷出 6、6、6 的次数是 4620(0.462%),掷出 2、5、3 的次数是 27792(2.7792%)

wadmdmaw 发表于 2022-3-19 18:46:23

傻眼貓咪 发表于 2022-3-19 14:09
复习复习:

这个代码感觉对我来说太复杂了{:10_282:}...可以请问一下如果就用if,random函数分两种情况,为什么运行出来不对么

傻眼貓咪 发表于 2022-3-19 19:46:23

wadmdmaw 发表于 2022-3-19 18:46
这个代码感觉对我来说太复杂了...可以请问一下如果就用if,random函数分两种情况,为什么运行 ...

以你的代码为例:
第一,如 2 楼大佬说的那样,去掉双引号,直接用整数便可。
第二,不要用 random.sample() 函数,不然永远达不到 这种情形,因为 sample() 是不重复的
第三,比较符 a == 看似没有问题,实则有问题,假设掷出 呢? a != 呗,所以必须先排序,再做比较。

傻眼貓咪 发表于 2022-3-19 19:53:31

wadmdmaw 发表于 2022-3-19 18:46
这个代码感觉对我来说太复杂了...可以请问一下如果就用if,random函数分两种情况,为什么运行 ...

如果修正你的代码,如下:import random
s = 0
k = 0
for i in range(1000000):
    a = random.choice(range(1, 7))
    b = random.choice(range(1, 7))
    c = random.choice(range(1, 7))
    arr = sorted()
    if arr == :
      s += 1
    if arr == :
      k += 1
print(s, k)

qq1151985918 发表于 2022-3-19 21:00:54

from random import randrange as r

res = [{r(1, 7), r(1, 7), r(1, 7)} for _ in range(10000)]
print("666 ->", res.count({6, 6, 6}))
print("235 ->", res.count({2, 3, 5}))

wadmdmaw 发表于 2022-3-20 15:27:31

isdkz 发表于 2022-3-19 13:02


谢谢!不好意思昨天不知道怎么回事没有看到二楼…确实是字符串和列表弄混了…但经过五楼提醒好像发现这道题我用的sample是搞不出来666这个组合的?{:10_324:}
页: [1]
查看完整版本: 掷骰子验证问题