甜萝 发表于 2024-5-7 23:19

概率模拟

本帖最后由 paypojie 于 2024-5-7 23:42 编辑

突发奇想弄的一个东东 功能是通过生成n次随机数来达到跟期望的数字相等 并输出概率
import random

for i in range(101):

    count = 1   
    random_1 = random.randint(0,i+1)

    while i != random_1:
      random_1 = random.randint(0,i+1)
      count += 1

    else:
      percentage = (1 / count) * 100
      print('[%d 循环%d次得到该数字 概率为%.2f%%]' % (i,count,percentage))



将代码改改 功能发生了改变 下面的代码作用是 测试随机数与随机数碰撞成功的概率
import random

for i in range(1,101):

    count = 1   
    random_1 = random.randint(0,101)
    random_2 = random.randint(0,101)

    while random_1 != random_2:
      random_2 = random.randint(0,101)
      count += 1

    else:
      percentage = (1 / count) * 100
      print('[第%d次碰撞 碰撞%d次得到该数字 概率为%.2f%%]' % (i,count,percentage))


随机和循环很有意思 哈哈

ouyang123321 发表于 2024-5-8 01:26

不错,可以搞成彩票软件吗?

爱飞的猫 发表于 2024-5-8 05:35

本帖最后由 爱飞的猫 于 2024-5-8 05:36 编辑

概率不对;一个好的随机算法,应当让生成任意指定范围数字的概率差不多趋势与一致(如果实验次数足够多)。

例如我扔骰子,运气不错连续两次扔到 6。根据你的程序算法,此时会停止,并认为碰到 6 的概率是 100%。此时样本过小,会不足以支撑这个数字。

```py
import random
import secrets
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

USE_SYSTEM_RANDOM = False# 改为 True 使用 SystemRandom
TEST_COUNT = 1000 * 1000 * 1000

# 计数器
counter = * 100

# 生成随机数
rnd = secrets.SystemRandom() if USE_SYSTEM_RANDOM else random.Random()
for _ in range(1000 * 100):
    number = rnd.randint(1, 100)
    counter += 1

# 出图
_, ax = plt.subplots()
ax.bar(range(1, 101), counter, align='center')

# 默认情况下无法渲染 CJK 字符,姑且写死一个 Windows 下的字体路径凑合用
font = fm.FontProperties(fname="C:/Windows/Fonts/msyh.ttc", size=14)

ax.set_title('随机分布', fontproperties=font)
ax.set_xlabel('数值', fontproperties=font)
ax.set_ylabel('次数', fontproperties=font)

plt.show()
```

![](https://imgsrc.baidu.com/forum/pic/item/0b7b02087bf40ad1cf86c3de112c11dfa9eccea9.png)

当然,每次执行时,不同值出现的频率都会上下摇摆一部分。

ltgb 发表于 2024-5-8 07:03

很好 楼主的两个都成功了

fatyung 发表于 2024-5-8 07:48

好是好啊

pdanny 发表于 2024-5-8 07:57

概率永远只能被模拟

shengrumenghuan 发表于 2024-5-8 08:33

好,很好

qylisten 发表于 2024-5-8 08:58

爱飞的猫 发表于 2024-5-8 05:35
概率不对;一个好的随机算法,应当让生成任意指定范围数字的概率差不多趋势与一致(如果实验次数足够多 ...

这处ttc字体文件在哪里?

hmg668 发表于 2024-5-8 09:44

大概率期望

jyjjf 发表于 2024-5-8 09:50

random函数本身就是个不完全的随机
页: [1] 2
查看完整版本: 概率模拟