|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 镜花丿水月 于 2021-1-15 00:32 编辑
我自己敲出来了但是不确定自己敲的是不是完全对的,所以希望大家能帮忙看一下有没有逻辑错误的地方。
自己检查的时候是对的。
另外,小甲鱼每次判断投掷硬币的正反面的时候,都是取(1,10)的随机整数然后除以2判断余数。
而我是直接取(1,2)随机整数判断正反面。1为正 2为反。请教下,这2种方法有什么本质上的区别吗?
自己写的代码如下
import random
i = input('请输入抛硬币的次数:')
i = int(i)
print('开始抛硬币实验')
count = 1
a = 0
b = 0
c = 0
c_sub = 0
d = 0
d_sub = 0
result_sub = 0
if i <= 100:
while count <= i:
result = random.randint(1,2)
if result != result_sub:
c_sub = 1
d_sub = 1
else:
if c < c_sub:
c = c_sub
elif d < d_sub:
d = d_sub
result_sub = result
count += 1
if result == 1:
print('正面',end='')
a += 1
c_sub += 1
else:
print('反面',end='')
b += 1
d_sub += 1
else:
while count <= i:
result = random.randint(1,2)
if result != result_sub:
c_sub = 1
d_sub = 1
else:
if c < c_sub:
c = c_sub
elif d < d_sub:
d = d_sub
result_sub = result
count += 1
if result == 1:
a += 1
c_sub += 1
else:
b+= 1
d_sub += 1
print('一共模拟了',i,'次抛硬币,结果如下:')
print('正面:',a,'次')
print('反面:',b,'次')
print('最多连续正面:',c,'次')
print('最多连续反面:',d,'次')
结果如下:
'''
楼主写的应该是没问题的,但是感觉比较乱
我自己刚刚敲了一个
楼主可以看看是不是有帮助
给楼主个建议
还是少用abcd这种变量
记不住谁是谁
'''
import random
num = int(input('请输入抛硬币的次数:'))
print('开始抛硬币实验')
#将数据用列表存储
# up 和 1 表示正面
# down 和 2 表示反面
# [1,0,0]分别表示[正面,正面次数,正面最大连续次数]
list_up = [1,0,0]
list_down = [2,0,0]
#循环内临时变量,用于判断
max_up = max_down = 0
for i in range(num):
random_num = random.randint(1,2)
if random_num == list_up[0]:
list_up[1] += 1
max_up += 1
max_down = 0
#如果随机数为1则正面次数加一
#正面连续次数加一
#反面连续次数清零
if max_up >=list_up[2]:
list_up[2] = max_up
#如果正面连续次数大于等于已记录列表内最大连续次数
#则更正列表内最大连续次数
#以下相同
elif random_num == list_down[0]:
list_down[1] += 1
max_down += 1
max_up = 0
if max_down >=list_down[2]:
list_down[2] = max_down
print('一共模拟了',num,'次抛硬币,结果如下:')
print('正面:',list_up[1],'次')
print('反面:',list_down[1],'次')
print('最多连续正面:',list_up[2],'次')
print('最多连续反面:',list_down[2],'次')
|
-
-
|