首页 > 编程语言 >如何用 Python 来模拟概率

如何用 Python 来模拟概率

时间:2022-10-31 09:55:53浏览次数:39  
标签:概率 Python 102400 number choice A1 lst total 模拟

 

小朋友问我一个问题, 如何用 Python 来模拟概率. 

题目是: 从 [-2, -1, 0, 1, 2, 3] 中随机选择两个不同的数, 乘积为 0 的概率是多少?

我搜索并思考了一下, 得出以下两种方式:

choice_1 的思路是, 对列表进行深拷贝来模拟

choice_2 的思路是, 如果选到相同的数, 就放弃本次选择.

乘积为 0 用 (A1 == 0 or A2 == 0) 来判断, 性能方面可能快一点

 

 1 import random
 2 import copy
 3 
 4 
 5 def choice_1 (trials):
 6 
 7     total  = 0
 8     number = 0.0
 9 
10     lst = [-2, -1, 0, 1, 2, 3]
11 
12     while total < trials:
13 
14         A1 = random.choice (lst)
15         lstbk = copy.deepcopy (lst)
16         lstbk.remove (A1)
17         A2 = random.choice (lstbk)
18 
19         if (A1 == 0 or A2 == 0):
20             number += 1.0
21 
22         total += 1
23 
24     print (number/total)
25 
26 
27 def choice_2 (trials):
28 
29     total  = 0
30     number = 0.0
31 
32     lst = [-2, -1, 0, 1, 2, 3]
33 
34     while total < trials:
35 
36         A1 = random.choice (lst)
37         A2 = random.choice (lst)
38         if (A1 == A2):
39             continue
40 
41         if (A1 == 0 or A2 == 0):
42             number += 1.0
43 
44         total += 1
45 
46     print (number/total)
47 
48 
49 choice_1 (102400)
50 choice_2 (102400)
51 choice_1 (102400)
52 choice_2 (102400)
53 choice_1 (102400)
54 choice_2 (102400)

 

输出:

0.335185546875
0.33296875
0.333583984375
0.33208984375
0.332392578125
0.333876953125

 

思路来自

https://stackoverflow.com/questions/11356036/probability-simulation-in-python 

 

标签:概率,Python,102400,number,choice,A1,lst,total,模拟
From: https://www.cnblogs.com/yun-dicom/p/16843233.html

相关文章

  • 两道类似的概率期望题目
    前几周的模拟赛才遇到过类似的套路,现在在AT上遇到又不会了……于是都记录一下。其实写完之后还是感觉不太能熟练运用……,可能需要多做题做理解。【XSY4214】quq题面:ht......
  • NOI2022模拟测试赛(二十二)
    link通道自己对于二分图构造一个类prufer序列。一个映射方式是合法的,只需要:一棵生成树能构造出一个prufer序列。能从一个prufer序列逆推回整棵树的形态,即过程......
  • NOI2021模拟测试赛(六十)
    题面西克把\(x\toy\)拆成\(x\tolca\toy\),而\(x\tolca\)的部分很好搞,不予阐述。关键是\(y\tolca\)的部分,我们考虑离线解决。从上往下走时,对每种颜色\(c\)......
  • KPGAME - A game with probability(概率dp,博弈)
    先考虑一下如果我想赢得游戏,我会采取的最优策略是什么。首先,想赢得游戏就是要取到最后一个石子,每次抛硬币相当于给你一次机会,每次机会都有相同概率取到石子,显然,最优策略就......
  • 盘点一个高德地图Python网络爬虫中前端数据和获取数据不一致问题
    大家好,我是皮皮。一、前言前几天在Python钻石交流群【心田有垢生荒草】问了一个Python网络爬虫的问题,下图是截图:代码初步看上去好像没啥问题,但是结果就是不对,地图上显......
  • 【XSY4055】小K的疑惑(模拟最短路,值域并查集)
    题面小K的疑惑题解以下的数都是在\(b\)进制意义下讨论。默认\(n\geqb\),否则\(n<b\)可以特判答案为\(1\)。考虑DP,设\(d_r\)表示所有模\(n\)余\(r\)的正......
  • Centos8 升级python3.6版本到python3.9
    下载Python3.9.51:wgethttps://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz2:tarzxvfPython-3.9.5.tgz安装必须的包3:dnf-yinstallgcczlib*libffi-dev......
  • Python程序暂停
    (39条消息)Python基础之程序暂停_zxnode的博客-CSDN博客_python暂停程序当我们执行某些程序时,由于机器速度很快导致肉眼无法直接看到执行结果时程序便停止运行。这时候我......
  • Python简单api实现
    flask作用及简单使用Flask的简单介绍及使用方法简介_珂鸣玉的博客-CSDN博客_flask 简单api搭建importflaskapi=flask.Flask(__name__)@api.route('/test1',......
  • python学习第五周总结
    正则表达式基础字符组特殊符号量词贪婪匹配和非贪婪匹配转义符re模块re模块补充说明第三方模块下载网络爬虫模块之requests模块hashlib加......