有關 2011-2nd Price Auction-CV 這個實驗程式的補充說明

修改後的程式參見: 2011-2nd Price Auction-CV

因為程式原來是假設整數出價, 所以利用以下

V decimal = randbetween(0,1)
V bid0=bid+decimal

這兩行的小技巧, 來決定誰得標
例如 有兩個人都出價 bid=1
電腦在選最大值時, 如果是用以下的判斷式來找

 v max_bid=G_max("bid")

雖然結果仍是 max_bid = 1 , 但是要再確定是誰得標 (只有一人可得標) 時, 用
if(bid=max_bid, ….) 的話, 會有兩個人符合這個條件
所以才利用

V decimal = randbetween(0,1)

產生介於 0~1 的小數, 由於隨機產生, 所以兩個人應該不太會得到完全相同的 decimal
再加上原來的 bid, 令新變數 bid0 為

V bid0=bid+decimal
 

故 這兩個人即使原來的 bid 值都一樣是1 , 但加上 decimal 後, 兩個人的 bid0 不會完全一樣, 而自會有高低之分 (即 i 的 bid0 > j 的bid0, 即便 i 的 bid = j 的bid)

在以下這個判斷式中, 就可以決定誰是得標者 (即使有多人是一樣的

v max_bid=G_max("bid0")

最後即可利用 if(bid0=max_bid, ….) 的判斷, 來決定誰是唯一的得標人
那我們在遊戲規則中, 就可以說, 若有兩人(以上)出同樣最高價時, 由電腦隨機決定誰得標

由於你將最小的出價 scale 設為 0.5, 所以應要將 decimal 設成再小一位小數位, 即介於 0~0.09 的小數, 即, 可將程式中的這一行改成

V decimal = randbetween(0,0.09)

在此情況下, 舉例來說, 若有兩個人皆出價 0.5, 但 i 的deciaml=0.02, j 的deciaml=0.09; 則

i 的bid0=0.5+0.02 = 0.52,
j 的 bid0=0.5 + 0.49 = 0.59

如此即知 j 是得標者, 但是這樣其實還是有一點小問題, 因為

 v max_bid=G_max("bid")

所以 max_bid 的值將等於
max_bid=G_max(0.52, 0.59,….) = 0.59

故用
if(bid0=max_bid, ….) 雖然就可以判斷出 j 是唯一出價 bid =0.5 的得標者
但我們只是要知道最高價是 0.5 的話 (並放在以下的 max_bid_show 變數), 必需要將我們替 bid 加上去的 decimal 減掉, 如此才會是正確的…或則直接利用 G_max() 再找一次

所以總共要改幾個地方

....
V decimal = randbetween(0,0.09)
 ...
....
# ---> 這行個不用了 --->   P max_bid.label="所有人之最高出價"
V max_bid_show = G_max("bid")
P max_bid_show.label="所有人之最高出價"
 ...
T table 1={"myPV","mybid","max_bid_show","payoff","acc_payoff"}

應該就可以了, 試試看…

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: