鱼C论坛

 找回密码
 立即注册
查看: 2157|回复: 9

[已解决]抛硬币问题中有些想不通的问题

[复制链接]
发表于 2020-11-13 00:09:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题如下:
1、为什么选取的区间是(1,10)?问题不是问的随机生成一个整数吗,那么为什么要在1到10面进行生成,而不是在这个范围之外生成呢?
2、判断硬币的正反面为什么是(num % 2)?

代码罗列如下:

import random

counts = int(input("请输入抛硬币的次数:"))
i = 0

print("开始抛硬币实验:")
while i < counts:
    num = random.randint(1, 10)

    if num % 2:
        print("正面", end=" ")
    else:
        print("反面", end=" ")

    i += 1
最佳答案
2020-11-13 00:50:05
本帖最后由 jackz007 于 2020-11-13 01:02 编辑

          1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环)中,在这个数值范围内,能产生出多少个奇数,多少个偶数而已,而这些数的值是多少并不重要,重要的是,在 (501 , 1000) 这样一个范围内,奇数、偶数的数量是一样多的(当然是各有 250 个);

          2、% 是取余操作符,(num % 2) 是对 num 除以 2 获取余数,当然,这个余数只能有 2 个数值,0 和 1,当 num 为偶数的时候等于 0,为奇数的时候等于 1。这样,我们就可以选取用 0 来代表 "正面",1 代表 "背面",当然,完全可以用 0 来代表 "背面",1 代表 "正面" ,二者所代表的效果和数学意义都是一样的,具体怎么选,完全看你个人喜好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 00:50:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-13 01:02 编辑

          1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环)中,在这个数值范围内,能产生出多少个奇数,多少个偶数而已,而这些数的值是多少并不重要,重要的是,在 (501 , 1000) 这样一个范围内,奇数、偶数的数量是一样多的(当然是各有 250 个);

          2、% 是取余操作符,(num % 2) 是对 num 除以 2 获取余数,当然,这个余数只能有 2 个数值,0 和 1,当 num 为偶数的时候等于 0,为奇数的时候等于 1。这样,我们就可以选取用 0 来代表 "正面",1 代表 "背面",当然,完全可以用 0 来代表 "背面",1 代表 "正面" ,二者所代表的效果和数学意义都是一样的,具体怎么选,完全看你个人喜好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-13 08:26:37 From FishC Mobile | 显示全部楼层
随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50%
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 08:31:34 | 显示全部楼层
jackz007 发表于 2020-11-13 00:50
1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环 ...

谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个问题有点疑问的是,,我理解了取余数不外乎有和没有这两种可能,但为什么不是((if num % 2) == 0)?或者说为什么要把"== 0 “这部分省略掉呢?

麻烦请解答下,谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 08:32:41 | 显示全部楼层
昨非 发表于 2020-11-13 08:26
随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50%

大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 08:35:39 From FishC Mobile | 显示全部楼层
Fring 发表于 2020-11-13 08:31
谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个 ...

if num%2

if num%2!=0
效果是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 08:37:36 From FishC Mobile | 显示全部楼层
Fring 发表于 2020-11-13 08:32
大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢?

因为你没有办法准确找到50%的概率
只能用随机数,确实只要随机数取的范围内,奇数偶数一样多就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 12:11:00 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-13 12:15 编辑
Fring 发表于 2020-11-13 08:31
谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个 ...


       对于逻辑表达而言,零值对应于 False,非零值对应于 True,所以:
if num % 2 :
      等效于
if num % 2 == 1:
      意思是,当 num 为奇数的时候,条件成立,两种写法效果一样。
if not num % 2 :
      等效于
if num % 2 == 0:
     意思是,当 num 为偶数的时候,条件成立为真,两种写法效果一样
     not 是把逻辑值反过来的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 12:56:13 | 显示全部楼层
jackz007 发表于 2020-11-13 00:50
1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 12:56:55 | 显示全部楼层
昨非 发表于 2020-11-13 08:35
if num%2

if num%2!=0

谢谢大哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 21:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表