Python与物理 - 系统的自发性熵减及Python模拟其时间

Python与物理 - 系统的自发性熵减及Python模拟其时间

听起来好傻:学过物理的都知道,根据热力学第二定律,一个孤立系统的熵是递增的。然而,请看下面这个栗子。
把一副纸牌认为是一个孤立系统,54张纸牌最开始有3、4、5、6、7、8、9、10、J、Q、K、A、2的顺序,此时系统有序,熵的值低。然后,随机洗牌,此时系统的熵会增加,因为纸牌没有了上述的顺序。
但是,毕竟洗牌的结果是一个随机事件,也就是说,纸牌洗牌后的结果只是概率问题:在极小的概率下,纸牌有可能在洗牌时变回最开始的顺序,即系统的熵减小了。
只不过,这个概率极小,其值为54!-1(约等于4.3319354677×10-72,约合0.00000…000(小数点后共71个零)43319354677)。但是,概率小不等于不可能,纸牌系统的熵是有可能自发性地降低的。
用计算机模拟洗牌,最后给出试验的次数和所耗时间。由于54张牌需要时间太长,给出9张牌的试验(P(x)=362880, E(x)=181440)。Python实现如下:

import time
import random

_all = [str(num) for num in range(1, 10)]  # 从1到9


def test():
    test_all = _all.copy()
    
    def get_num():
        number = test_all[random.randint(0, test_all.__len__() - 1)]
        index = 0
        for num in test_all:
            if num == number:
                del num[index]
                break
            index += 1
        # 简便写法忘了
        return number
    
    result = []
    for i in range(9):
        result.append(get_num())
    return result


i = 1
start = time.time()
while True:
    r = test()
    print('Test Information\nNumber: {}\nResult: {}\nOrdered:{}\nSucceed: {}\n\n\n'.format(i, ', '.join(r), ', '.join(_all), r == _all))
    if r == _all:
        break
    i += 1
end = time.time()
print('Test has ended. Number of tests: {}, it took {} seconds.'.format(i, end - start))
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值