Fring 发表于 2020-11-13 00:09:44

抛硬币问题中有些想不通的问题

问题如下:
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

jackz007 发表于 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 代表 "正面" ,二者所代表的效果和数学意义都是一样的,具体怎么选,完全看你个人喜好。

昨非 发表于 2020-11-13 08:26:37

随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50%

Fring 发表于 2020-11-13 08:31:34

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

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

麻烦请解答下,谢谢!!

Fring 发表于 2020-11-13 08:32:41

昨非 发表于 2020-11-13 08:26
随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50%

大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢?

昨非 发表于 2020-11-13 08:35:39

Fring 发表于 2020-11-13 08:31
谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个 ...

if num%2

if num%2!=0
效果是一样的

昨非 发表于 2020-11-13 08:37:36

Fring 发表于 2020-11-13 08:32
大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢?

因为你没有办法准确找到50%的概率
只能用随机数,确实只要随机数取的范围内,奇数偶数一样多就好了

jackz007 发表于 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 是把逻辑值反过来的意思

Fring 发表于 2020-11-13 12:56:13

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

谢谢

Fring 发表于 2020-11-13 12:56:55

昨非 发表于 2020-11-13 08:35
if num%2

if num%2!=0


谢谢大哥
页: [1]
查看完整版本: 抛硬币问题中有些想不通的问题