掷骰子验证问题
题目:掷骰子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,是哪里出问题了呢?这个应该如何编写呢? 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) 复习复习:{: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%) 傻眼貓咪 发表于 2022-3-19 14:09
复习复习:
这个代码感觉对我来说太复杂了{:10_282:}...可以请问一下如果就用if,random函数分两种情况,为什么运行出来不对么 wadmdmaw 发表于 2022-3-19 18:46
这个代码感觉对我来说太复杂了...可以请问一下如果就用if,random函数分两种情况,为什么运行 ...
以你的代码为例:
第一,如 2 楼大佬说的那样,去掉双引号,直接用整数便可。
第二,不要用 random.sample() 函数,不然永远达不到 这种情形,因为 sample() 是不重复的
第三,比较符 a == 看似没有问题,实则有问题,假设掷出 呢? a != 呗,所以必须先排序,再做比较。 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) 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}))
isdkz 发表于 2022-3-19 13:02
谢谢!不好意思昨天不知道怎么回事没有看到二楼…确实是字符串和列表弄混了…但经过五楼提醒好像发现这道题我用的sample是搞不出来666这个组合的?{:10_324:}
页:
[1]