通過SQL解讀財富的分配 二

2021-09-22 19:12:29 字數 2020 閱讀 9289

之前分析過一篇《通過sql解讀財富的分配》,當時還不過癮,其實是我還沒看到很多自己期望看到的資料,於是後面又做了一些測試,先測試了一版2000萬的資料,得到的結果和100的差別不大,本來想來乙個全球70億人的遊戲大聯歡,但是確實蠻有挑戰。

如果後期還準備玩這個遊戲,我就加入更多的資料維度更有意義。

今天測試的是四個場景,樣本基數是1000人,測試100次。

1)房間裡有1000個人,每人都有1元錢,他們在玩乙個遊戲。每輪遊戲中,每個人都要拿出一元錢隨機給另乙個人,最後這1000個人的財富分布是怎樣的?

2)房間裡有1000個人,每人都有1元錢,他們在玩乙個遊戲。每輪遊戲中,每個人都要拿出一元錢隨機給另乙個人,如果自己手頭沒有錢,可以每次透支1元錢,最後這1000個人的財富分布是怎樣的?

3)房間裡有1000個人,每人都有1000元錢,他們在玩乙個遊戲。每輪遊戲中,每個人都要拿出一元錢隨機給另乙個人,最後這1000個人的財富分布是怎樣的?

4)房間裡有1000個人,每人都有1000元錢,他們在玩乙個遊戲。每輪遊戲中,每個人都要拿出一元錢隨機給另乙個人,如果自己手頭沒有錢,可以每次透支1元錢,最後這1000個人的財富分布是怎樣的?

猛一看,好像都差不多,其實資料差別大了去了。

1 第乙個是每次1元的本錢,反覆100次,不透支。得到的資料如下,可以看到絕大多數的人都是手裡空空,或者原地踏步,能夠稍有成就的都是少數,能夠出類拔萃的那是極少數。

2 第二個場景是,允許你透支,如果手頭沒錢,每次透支1元,反反覆覆100次。

第二組資料的差異化很大,輸得最多的人輸了近99元,贏得最多的人差不多是79,而中間的比例很明顯,贏得14元和輸了11元的比例相當,佔的比重較高。

3 第三組資料,我們玩大一些,每次1元有些太少了。就來本錢是1000元。每一輪回歸1000元,重新開始,試驗100輪。

這組資料很有意思,至少不會輸得精光。而且從測試結果來看肯定該不會,至少能夠有900元在手。而運氣好的人,運氣也好不到**去。最多能夠贏得75元,即1075元在手。

這個結果和我的初步想法差距很大,如果以中線1000為界,虧的人還是要多一些。

4 第四組資料更激進些,每個人還是1000的本錢,允許透支,每次1元,反反覆覆100次。

實驗了100次,最少的還是900元,但是比例極低,基本的區間還是在999~1001之間。

但是增幅其實很小,不會有大起大落。

如果要測試指令碼,其實很簡單,就幾行sql改動一下即可。

變更核心邏輯:

--delete from test_money;

--insert into test_money select level,1  from dual connect by level <=1000;

--commit;

begin

for i in 1..1000 loop

update test_money set money=money-1 where pid=i;

update test_money set money=money+1 where pid=trunc(dbms_random.value(0,1000)) ;

end loop;

end;

/set pages 200

select money,count(*)from test_money group by money order by money;

前端的排程器和資訊彙總

for i in

dosqlplus -s / as sysdba<

通過分析SQL語句的執行計畫優化SQL (二)

第1章 效能調整綜述 oracle資料庫是高度可調的資料庫產品。本章描述調整的過程和那些人員應與oracle伺服器的調整有關,以及與調整相關聯的作業系統硬體和軟體。本章包括以下方面 l 誰來調整系統?l 什麼時候調整?l 建立有效調整的目標 l 在設計和開發時的調整 l 調整產品系統 l 監控產品系...

貨幣是控制人類社會的財富分配的工具

如果美國人民最終讓私有銀行控制了國家的貨幣發行,那麼這些銀行將先是通過通貨膨脹,然後是通貨緊縮,來剝奪人民的財產,直到有一天早晨當他們的孩子們一覺醒過來時,他們已經失去了他們的家園和他們父輩曾經開拓過的大陸.美國第三屆 的托馬斯.傑弗遜 舉乙個簡單的例子比如房價,在通貨膨脹的時候房價從1w漲到了2w...

通過游標刪除sql中的javascript指令碼

declare t varchar 555 c varchar 555 inscript varchar 8000 set inscript declare table cursor cursor for select a.name,b.name from sysobjects a,syscolum...