随机数、概率题

  1. 由rand5 (0-4)生成rand7 (0-6)
    res = 5*rand5 + rand5,这样生成0-24之间的数,能够保证每个数的概率相同,取0-20之间的数,舍弃后面的,然后输出res%7即为rand7的效果
    扩展:由randA (0-a)生成randB (0-b)
    若a>b,直接返回0-b之间的数即可;
    若a<b,res=(a+1)*randA+randA,若res仍小于b,则令randA=res,继续执行该步直到res>b返回0-b之间的数
    注意: 若rand是从1开始(如rand5 (1-a)),则上述生成新范围的概率公式为:a*(randA-1)+randA,返回res%b + 1.
  2. 随机打乱数组
    从后往前,对位置i,选择0-i之间位置的值与i的值进行交换
import random
def shuffle(arr):
    for i in range(len(arr))[::-1]:
        x = random.randint(0, i)
        arr[x], arr[i] = arr[i], arr[x]
    return arr

每个数出现在任意位置的概率均为1/n
3. 随机取样
总共取出m个
1)总数确定
设第i-1步已经取到T个,则第i个数取出的概率为(m-T)/(N-i).
2)总数不确定,或者很大
对前m个数默认放在输出的数组中,对此后的第i个数以m/i保存在输出数组的任意位置.
4. 在一条高速公路上,在30分钟内看到一辆汽车的可能性是0.95,那么在10分钟内看到一辆车的概率是多少?(假设过车的概率是恒定的)
设10分钟内出现车的概率为p,则 ( 1 − p ) 3 = 1 − 0.95 (1-p)^3=1-0.95 (1p)3=10.95,则可求出p
5. 一副扑克牌54张,平均分成三堆,大小王在一堆的概率?
C 3 1 C 52 16 C 36 18 C 54 18 C 36 18 = 17 53 \frac{\mathrm{C}_{3}^{1}\mathrm{C}_{52}^{16}\mathrm{C}_{36}^{18}}{\mathrm{C}_{54}^{18}\mathrm{C}_{36}^{18}}=\frac{17}{53} C5418C3618C31C5216C3618=5317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值