抛硬币问题中有些想不通的问题
问题如下: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 01:02 编辑
1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环)中,在这个数值范围内,能产生出多少个奇数,多少个偶数而已,而这些数的值是多少并不重要,重要的是,在 (501 , 1000) 这样一个范围内,奇数、偶数的数量是一样多的(当然是各有 250 个);
2、% 是取余操作符,(num % 2) 是对 num 除以 2 获取余数,当然,这个余数只能有 2 个数值,0 和 1,当 num 为偶数的时候等于 0,为奇数的时候等于 1。这样,我们就可以选取用 0 来代表 "正面",1 代表 "背面",当然,完全可以用 0 来代表 "背面",1 代表 "正面" ,二者所代表的效果和数学意义都是一样的,具体怎么选,完全看你个人喜好。 随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50% jackz007 发表于 2020-11-13 00:50
1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环 ...
谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个问题有点疑问的是,,我理解了取余数不外乎有和没有这两种可能,但为什么不是((if num % 2) == 0)?或者说为什么要把"== 0 “这部分省略掉呢?
麻烦请解答下,谢谢!! 昨非 发表于 2020-11-13 08:26
随机数的概率是一样的,所以按奇偶划分,就能保证概率各占50%
大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢? Fring 发表于 2020-11-13 08:31
谢谢。
1、关于第一个奇数和偶数的问题,是不是只要奇数和偶数数量一样多,什么范围都可以。
2、第二个 ...
if num%2
和
if num%2!=0
效果是一样的 Fring 发表于 2020-11-13 08:32
大哥,能解答详细点吗,为什么要用这种程序语句和范围来适用呢?
因为你没有办法准确找到50%的概率
只能用随机数,确实只要随机数取的范围内,奇数偶数一样多就好了 本帖最后由 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 是把逻辑值反过来的意思 jackz007 发表于 2020-11-13 00:50
1、你完全可以在这个范围以外选择,比如,(501 , 1000),因为我们只是需要统计在多次实验(循环 ...
谢谢 昨非 发表于 2020-11-13 08:35
if num%2
和
if num%2!=0
谢谢大哥
页:
[1]