成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

番外篇:分享一道用Python基礎+蒙特卡洛算法實現排列組合的題目(附源碼)

開發 后端 算法
我是Python進階者。本文基于粉絲針對排列組合問題的提問,給出了一個利用Python基礎+蒙特卡洛算法的解決方案,基本上可以達到了粉絲的要求。

[[433811]]

大家好,我是Python進階者。

是不是覺得很詫異?明明上周剛發布了這篇:分享一道用Python基礎+蒙特卡洛算法實現排列組合的題目(附源碼),今天又來一篇,名曰番外篇!其實今天是想給大家分享【🌑(這是月亮的背面)】大佬的解法,拍案叫絕!

前情回顧

前幾天在才哥交流群里,有個叫【Rick Xiang】的粉絲在Python交流群里問了一道關于排列組合的問題,初步一看覺得很簡單,實際上確實是有難度的。

題目是:一個列表中有隨機15個數,沒有重復值。從列表里面任意選5個數,如何選出來包含a, a+1的所有組合。a可以是15個數中的任意一個。

關于思路和解決方法,這篇文章分享一道用Python基礎+蒙特卡洛算法實現排列組合的題目(附源碼)中提供了【張老師】和【有點意思】大佬的想法和解決方案,一共有5份代碼,足夠大家學習了,感興趣的小伙伴快去學習吧,干貨滿滿。

二、新代碼

上周五的時候,發布了這篇分享一道用Python基礎+蒙特卡洛算法實現排列組合的題目(附源碼)原創文章,很慶幸還有粉絲親自實踐,并給出了建設性的方案,如下圖所示。

這里先給出【🌑(這是月亮的背面)】大佬的偽代碼,這樣看上去大家也更加好理解一些。

  1. # -*- coding: utf-8 -*- 
  2. # 模塊化 
  3. import random 
  4. import numpy as np 
  5. import time 
  6.  
  7.  
  8. # 取出隨機的15個數值 
  9. def get_random15(): 
  10.     random_array = [np.array(random.sample(range(2000), 15)) for i in range(100000)] 
  11.     random5 = {get_random5(random15) for random15 in random_array} 
  12.     return [i for i in random5 if i] 
  13.  
  14.  
  15. # 遍歷隨機的15個數值,取相鄰的兩個隨機數,判斷后返回滿足條件的值 
  16. def get_random5(random_15): 
  17.     random_5 = set(random_15[random.sample(range(15), 5)])  # np.array的索引替換choice取值 
  18.     # 利用set特性判斷元素是否含有給定的元素 
  19.     random_5_resp = {True if len(random_5.intersection({num, num + 1})) == 2 else False for num in random_5} 
  20.     return tuple(random_5) if True in random_5_resp else () 
  21.  
  22.  
  23. if __name__ == '__main__'
  24.     start_time = time.time() 
  25.     final_result = get_random15() 
  26.     print("共%d個符合題意的列表" % len(final_result)) 
  27.     print("分別是:%s" % final_result) 
  28.     end_time = time.time() 
  29.     used_time = end_time - start_time 
  30.     print() 
  31.     print("本次程序用時:{}".format(time.strftime('%H(小時):%M(分鐘):%S(秒)'time.gmtime(used_time)))) 

這個代碼寫的真的很好,沒有Python基礎的小伙伴看上去肯定有些吃力的,小編自己初看的時候,也覺得有點難以吸收,需要多看幾遍,領悟。

這個代碼親測有效,用之前的代碼大概需要12秒,改用這個只需要1.5秒。

他這里做了三個優化,其一是之前從15個數中隨機取5個值耗時較長,這里用使用了numpy.array的特性來優化代碼,在科學計算中,可以省掉很多循環語句,代碼使用方面比Python列表簡單,Python list 無法直接運算, Numpy Array 可直接運算;其二是刪除了之前的去重函數,這里他也用set去優化,所以在這塊也節約了時間;其三是使用了集合的交集運算(Intersection),較之前的if判斷來說,節約了時間。

想到這里,不得不感嘆一下,【人生苦短,我用python】!

三、總結

我是Python進階者。本文基于粉絲針對排列組合問題的提問,給出了一個利用Python基礎+蒙特卡洛算法的解決方案,基本上可以達到了粉絲的要求。

不過話說回來,這個方案雖是當下最優,但不是永遠最優。

 

責任編輯:姜華 來源: Python爬蟲與數據挖掘
相關推薦

2021-11-05 09:01:15

Python算法Python基礎

2021-11-10 07:47:49

Python源碼代碼

2021-08-20 10:12:35

Python蒙特卡洛股票

2024-12-13 16:11:01

2025-02-24 10:15:00

2025-05-26 08:52:00

2018-03-13 16:04:45

Promise執行順序

2021-03-02 11:29:50

算法算法分析前端

2021-08-21 14:30:58

機器學習bilibili股價

2021-08-23 11:15:20

Python機器學習bilibili

2009-08-11 15:09:44

一道面試題C#算法

2025-02-13 09:34:13

2012-05-18 11:17:58

Java多線程

2023-04-12 15:58:58

2024-05-09 08:33:33

2024-08-19 08:45:00

開源模型

2009-08-11 10:12:07

C#算法

2009-08-11 14:59:57

一道面試題C#算法

2024-03-18 13:32:11

2023-10-27 13:05:23

模型訓練
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕精品一区二区三区在线 | 久久精品91久久久久久再现 | 99久久婷婷国产综合精品电影 | 成人久久久久 | 国产乱精品一区二区三区 | 欧美一级在线观看 | 欧洲精品在线观看 | 欧美日韩在线观看视频网站 | 成人激情视频 | 天天干天天爱天天操 | 小视频你懂得 | 色橹橹欧美在线观看视频高清 | 国产精彩视频 | 亚洲综合久久久 | 黄色高清视频 | 国产一区二区三区在线免费观看 | 欧美性生交大片免费 | 欧美激情a∨在线视频播放 成人免费共享视频 | 日韩久久精品 | 天天插天天操 | 亚洲成人免费av | 91精品国产91久久久久游泳池 | 成人在线a| 精品久久久久久亚洲综合网站 | 色桃网 | 久久亚洲精品久久国产一区二区 | 一区二区福利视频 | 懂色av色香蕉一区二区蜜桃 | 亚洲国产成人在线视频 | 自拍偷拍视频网 | 一级一级一级毛片 | 国产福利在线播放 | 免费电影av | 女女爱爱视频 | 久久成人18免费网站 | 欧美日韩在线一区二区 | 草草影院ccyy| 色综合久久伊人 | 色啪网| 亚洲在线观看视频 | 综合激情久久 |