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

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

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

[[433811]]

大家好,我是Python進階者。

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

前情回顧

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

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

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

二、新代碼

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

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

  1. # -*- coding: utf-8 -*- 
  2. # 模塊化 
  3. import random 
  4. import numpy as np 
  5. import time 
  6.  
  7.  
  8. # 取出隨機的15個數(shù)值 
  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個數(shù)值,取相鄰的兩個隨機數(shù),判斷后返回滿足條件的值 
  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基礎(chǔ)的小伙伴看上去肯定有些吃力的,小編自己初看的時候,也覺得有點難以吸收,需要多看幾遍,領(lǐng)悟。

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

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

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

三、總結(jié)

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

不過話說回來,這個方案雖是當(dāng)下最優(yōu),但不是永遠最優(yōu)。

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2021-11-05 09:01:15

Python算法Python基礎(chǔ)

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執(zhí)行順序

2021-03-02 11:29:50

算法算法分析前端

2021-08-21 14:30:58

機器學(xué)習(xí)bilibili股價

2021-08-23 11:15:20

Python機器學(xué)習(xí)bilibili

2012-05-18 11:17:58

Java多線程

2009-08-11 15:09:44

一道面試題C#算法

2023-04-12 15:58:58

2025-02-13 09:34:13

2009-08-11 10:12:07

C#算法

2024-05-09 08:33:33

2024-08-19 08:45:00

開源模型

2023-10-27 13:05:23

模型訓(xùn)練

2024-12-11 08:12:24

2009-08-11 14:59:57

一道面試題C#算法
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲网站在线观看 | 成人免费视频在线观看 | 国产japanhdxxxx麻豆 | 久久久久久久亚洲精品 | 性国产丰满麻豆videosex | 精品欧美一区二区精品久久久 | 国产精品国产精品国产专区不卡 | 精品成人av| 婷婷在线视频 | www日日日| 伊人色综合久久久天天蜜桃 | 国产一区二区三区免费 | 91香蕉视频在线观看 | 精品在线一区 | 黄色片免费在线观看 | 亚洲狠狠爱 | 国产一区二区精品 | 高清色| 国产精品国产三级国产aⅴ中文 | 亚洲欧美日韩精品久久亚洲区 | 亚洲成人精品在线 | 午夜在线小视频 | 亚洲天堂一区 | 丁香五月缴情综合网 | www国产亚洲精品久久网站 | 一区二区三区国产 | 久久久久久国产精品 | 欧美日韩国产高清视频 | 久久激情视频 | a爱视频 | 久久久久国产一区二区三区四区 | 国产精品中文字幕一区二区三区 | 日本成人中文字幕在线观看 | 欧美日韩在线一区二区 | 日韩精品一区在线观看 | 亚洲欧美日韩一区 | 亚洲人在线 | 国产精品视频免费播放 | 伊人久久伊人 | av网址在线 | 欧美 日韩 国产 成人 在线 91 |