利用SQL實現一個圖形概率問題
今天和同事聊天的時候,同事提到開發版有個SQL問題比較有意思:http://www.itpub.net/thread-1122842-1-1.html
在一個7×7的圖形內,構造一個等腰三角形的概率有多大。
說實話,用SQL實現比較困難,但是這道題居然是小學的數學題,如果不懂勾股定理,怎麼解題還真是沒有思路。不過話說回來,小學的孩子會懂得概率的含義嗎,看來只能認為出題的是個BT了。
SQL> WITH
2 A AS (SELECT ROWNUM - 1 I FROM DUAL CONNECT BY LEVEL <= 49)
3 SELECT COUNT(*) COUNT,
4 SUM(
5 CASE WHEN (ABS(D1 - D2) < 0.001 OR ABS(D1 - D3) < 0.001 OR ABS(D2 - D3) < 0.001)
6 AND D1 + D2 - D3 > 0.001 AND D1 + D3 - D2 > 0.001 AND D2 + D3 - D1 > 0.001
7 THEN 1 END
8 )/COUNT(*) RATE
9 FROM
10 (
11 SELECT
12 POWER(POWER(TRUNC(C.I/7) - TRUNC(B.I/7), 2) + POWER(MOD(C.I, 7) - MOD(B.I, 7), 2), 0.5) D1,
13 POWER(POWER(TRUNC(C.I/7) - TRUNC(A.I/7), 2) + POWER(MOD(C.I, 7) - MOD(A.I, 7), 2), 0.5) D2,
14 POWER(POWER(TRUNC(B.I/7) - TRUNC(A.I/7), 2) + POWER(MOD(B.I, 7) - MOD(A.I, 7), 2), 0.5) D3
15 FROM A, A B, A C
16 WHERE A.I < B.I
17 AND B.I < C.I
18 );
COUNT RATE
---------- ----------
18424 .119409466
解決問題的思路很簡單,就是利用勾股定理來判斷。如果滿足任意兩邊之和大於第三邊,就滿足構成三角形的條件。
而如果任意兩條邊的長度相等,就滿足等腰三角形的條件。
最後將兩個結果相除就是所求結果。
不過Oracle在進行平方和開方的時候存在一些小的誤差,導致有些3點在一條直線的情況無法判斷出來。這種情況應該是兩邊只和等於第三邊,但是由於誤差,導致這裡的結果也是大於,因此這裡採用兩邊之和減第三邊,判斷這個結果大於一個接近0的數值。對於當前這道題,由於三個點取值都是離散的整數,所有這種近似的方法不會存在問題。這個接近0的數值與邊長相比要小几個數量級,因此不會影響比較結果,而和Oracle誤差相比又大了很多個數量級,所以可以有效的避免誤差的產生。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-550327/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個樹形聚集SQL問題SQL
- 一個樹形聚集SQL問題(二)SQL
- 一個樹形聚集SQL問題(物料BOM消耗計算) ztSQL
- 使用.Net Core實現的一個圖形驗證碼
- 利用圖形介面從SQL匯入匯出到MySQLMySql
- 一個樹形聚集SQL問題(二) (物料BOM消耗量計算) ztSQL
- 關於介面實現的一個小問題
- 請教一個timeout的實現問題
- 利用 Matplotlib 繪製資料圖形(一)
- 如何利用CSS寫一個六邊形?CSS
- 請問:一些圖示的拖放,然後圖形方式這個圖示對應的類是如何實現的
- pl/sql developer的一個小問題SQLDeveloper
- 利用SQL實現通訊錄SQL
- Flutter - 利用 ClipPath 實現任意形狀 WidgetFlutter
- Asp.net利用Treeview實現樹形列表ASP.NETView
- Canvas入門實戰之用javascript物件導向實現一個圖形驗證碼CanvasJavaScript物件
- 圖形程式設計問題記錄程式設計
- 您說的這個功能實現不是問題,問題是實現不了~~
- 利用ConcurrentHashMap來實現一個ConcurrentHashSetHashMap
- 一個SQL效能問題的優化探索SQL優化
- MYSQL 阿里的一個sql優化問題MySql阿里優化
- VNC圖形介面操作Linux時出現灰色畫面問題VNCLinux
- java圖形驗證碼實現Java
- 再用sql實現一條小學題~SQL
- 從一個群友問題看流複製實現原理
- 利用SQL解釋一個魔術SQL
- 培訓班上學員的一個SQL問題SQL
- 使用sql*plus時的一個安全小問題SQL
- 一個JTextPane寫SQL語句的問題SQL
- css3 box-shadow 利用一個div實現紅綠燈圖案CSSS3
- QT 自定義QGraphicsItem 縮放後旋轉 圖形出現漂移問題QT
- 各位同仁,請教一個struts中下載實現的問題
- 發現了網站一個問題網站
- 一道小學題的sql實現~~~SQL
- 圖形驗證碼設計實現
- 利用 canvas 實現圖片壓縮Canvas
- Kindd:一個圖形化 dd 命令前端前端
- 解決zabbix圖形化中文亂碼問題